NyLakkert Skrevet 23. oktober 2007 Del Skrevet 23. oktober 2007 Holder på med en oppgave i Excel VBA,men trenger hjelp til et par ting. Jeg har en tabell i B3:G7 som skal flyttes til D10:I14, når det trykkes på en knapp. Jeg får flyttet innholdet, men ikke kantlinjene i tabellen. Koden jeg har brukt: Dim x As Variant x = Range("B3:G7").Value Range("B3:G7").Value = Range("D10:I14").Value Range("D10:I14").Value = x I en annen oppgave har jeg følgende ord plassert i cellene A1:A4: LAMA KROKODILLE PYTONSLANGE ELEFANT Når jeg trykker på en knapp skal listen bli slik: ELEFANT PYTONSLANGE KROKODILLE LAMA Også tilbake til riktig rekkefølge når jeg trykker igjen. Hvordan skal jeg gjøre dette? takker for svar på forhånd;) Lenke til kommentar
Harald Staff Skrevet 23. oktober 2007 Del Skrevet 23. oktober 2007 Hei Value er bare beregnede resultater. Sjekk andre range-properties, som format, numberformat, borders, ... Eller simpelthen spill inn en makro mens du gjør det, eller deler av det, manuelt, for et kodeutgangspunkt. Klarer ikke svare bedre uten hele oppgaveteksten. Sorteringsoppgaven gir meg ingen mening verken i "gal" eller "riktig" rekkefølge. Men det er en ide å ha forskjellige nummerrekker i nabokolonnene og sortere etter disse, dersom inge nadre sorteringskriterier er å få øye på. HTH. Beste hilsen Harald Lenke til kommentar
aadnk Skrevet 24. oktober 2007 Del Skrevet 24. oktober 2007 I "sorteringsoppgaven" er vel hensikten å reversere radene, om jeg ikke tar helt feil? I så fall burde følgende kode fungere utmerket: Sub btnReverse() Dim Row As Integer, Height As Integer, Column As Integer Height = Selection.Rows.Count ' Reverser rader kolonne for kolonne For Row = 1 To (Height - 1) / 2 For Column = 1 To Selection.Columns.Count SwapCells Selection(Row, Column), Selection(Height - Row + 1, Column) Next Next End Sub Sub SwapCells(A As Range, B As Range) Dim Temp Temp = B B = A A = Temp End Sub Lenke til kommentar
Harald Staff Skrevet 24. oktober 2007 Del Skrevet 24. oktober 2007 Doh! Det har du antakelig rett i ja. Pass på at løsningen din bruker default property til Range og dermed overskriver formler. Dersom det er problematisk, løses det ved å bruke enten Formula eller FormulaR1C1 -alt ettersom hvordan den skal håndtere cellereferansene: Temp = B.FormulaR1C1 B.FormulaR1C1 = A.FormulaR1C1 A.FormulaR1C1 = Temp Beste hilsen Harald Lenke til kommentar
NyLakkert Skrevet 24. oktober 2007 Forfatter Del Skrevet 24. oktober 2007 I "sorteringsoppgaven" er vel hensikten å reversere radene, om jeg ikke tar helt feil? I så fall burde følgende kode fungere utmerket: Sub btnReverse() Dim Row As Integer, Height As Integer, Column As Integer Height = Selection.Rows.Count ' Reverser rader kolonne for kolonne For Row = 1 To (Height - 1) / 2 For Column = 1 To Selection.Columns.Count SwapCells Selection(Row, Column), Selection(Height - Row + 1, Column) Next Next End Sub Sub SwapCells(A As Range, B As Range) Dim Temp Temp = B B = A A = Temp End Sub Jeg er helt grønn på dette området, men det skjer ikke noe etter at jeg har lagt inn koden over. Står i oppgaven: Den enkleste måten å løse denne oppgaven på, er å bruke et like stort område i regnearket som mellomlagring, f.eks "A11:A14". Mellomlagringsområdet skal slettes så snart listen er snudd. Forslag til pseudokode for løsning: START VBA-RUTINE FOR ALLE CELLER I DEN OPPRINNELIGE LISTEN, UTFØR kopier ord til tilsvarende CELLE i mellomlageret SLUTT UTFØR FOR ALLE CELLER I MELLOMLAGERET, UTFØR kopier ord til ny posisjon(CELLE) i den opprinnelige listen SLUTT UTFØR FOR ALLE CELLER I MELLOMLAGERET, UTFØR SLett innhold i CELLE SLUTT UTFØR Lenke til kommentar
NyLakkert Skrevet 24. oktober 2007 Forfatter Del Skrevet 24. oktober 2007 Jeg har nå oppdaget en kode;) Dim x As Variant x = Range("A1").Value Range("A1").Value = Range("A4").Value Range("A4").Value = x Dim y As Variant y = Range("A2").Value Range("A2").Value = Range("A3").Value Range("A3").Value = y End Sub Men jeg sliter fortsatt med å få flyttet hele tabellen med kantlinjene å ikke bare innholdet. Hvilken cellereferanse skal man bruke dersom jeg bruker format istedet for range? Lenke til kommentar
Harald Staff Skrevet 24. oktober 2007 Del Skrevet 24. oktober 2007 Oppgaven tar feil. Den enkleste måten er å nummerere cellene i nabokolonnen nedover, og så sortere etter denne stigende eller synkende, og eventuelt å slette numrene igjen. Ellers ser det ut som oppgaveteksten befatter seg med å flytte ordene, ikke kantlinjer og annet. Strever fremdeles med å skjønne hva dette er en øvelse i. Er det å skrive løkker? Det forklarer forslag til løsning i så fall. HTH. Beste hilsen Harald Lenke til kommentar
NyLakkert Skrevet 24. oktober 2007 Forfatter Del Skrevet 24. oktober 2007 Oppgaven tar feil. Den enkleste måten er å nummerere cellene i nabokolonnen nedover, og så sortere etter denne stigende eller synkende, og eventuelt å slette numrene igjen.Ellers ser det ut som oppgaveteksten befatter seg med å flytte ordene, ikke kantlinjer og annet. Strever fremdeles med å skjønne hva dette er en øvelse i. Er det å skrive løkker? Det forklarer forslag til løsning i så fall. HTH. Beste hilsen Harald Det er ikke i denne oppgaven jeg skal flytte kantlinjene;) Hva skal jeg sette inn som A og B i denne koden, evt hvordan skal jeg skrive det for å ikke få en feilmelding? Tabellen står i B3:G7 og skal flyttes til D10:I14. Temp = B.FormulaR1C1 B.FormulaR1C1 = A.FormulaR1C1 A.FormulaR1C1 = Temp Lenke til kommentar
Harald Staff Skrevet 24. oktober 2007 Del Skrevet 24. oktober 2007 Ah ok. Linjene mine var små tilføyelser til aadnk's kode. Prøv den først du. Lim inn i en modul, så, viktig, merker du tabellen og bare den, så kjører du makro btnReverse. Men det den gjør er å stokke om tabellen. Flytte celler er annerledes. Igjen: Spill inn en makro mens du gjør det manuelt, og ta det derfra. HTH. Beste hilsen Harald Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå