Deppodi Postad September 30, 2022 Dela Postad September 30, 2022 Hej, A1, B1 och C1 är rubriker. A2:C2 är värden som jag vill kopiera och klistra in på A3:C3. Sen vill jag kopiera A2:C2 igen och klistra in på nästa lediga rad under A3:C3, dvs. A4:C4. Sen kopiera A2:C2 och klistra in på nästa lediga rad igen A5:C5. Osv. Osv. Osv. Det är alltid A2:C2 som kommer att kopieras, så den är ju lätt att sätta upp som ett fast värde, men sen förstår jag inte hur jag skapar en range som kopierar detta, xlfilldown och offset 1. Jag förstår rent teoretiskt att jag ska köra någon uppsättning blir i stil med nedan, men jag får inte till det. Någon som vill hjälpa mig? 😊 Sub CopyAndPaste() Dim i As Long For i = 1 To 1 Range("a2:c2").Copy Destination:=Range(.ActiveCell).Offset(i, 0) Next i End Sub Förlåt för min okunskap och tack på förhand för hjälpen! Citera Länk till kommentar Dela på andra webbplatser Fler delningsalternativ...
Lösning Deppodi Postad Oktober 2, 2022 Författare Lösning Dela Postad Oktober 2, 2022 Jag hittade en lösning: Sub Makro3() Range("A2:C2").Select Selection.Copy Range("A2").Select Selection.End(xlDown).Offset(1, 0).Select ActiveSheet.Paste End Sub Citera Länk till kommentar Dela på andra webbplatser Fler delningsalternativ...
MH_ Postad Oktober 3, 2022 Dela Postad Oktober 3, 2022 Om du ändrar Range("A2").Select till Range("A1").Select Så funkar det även första gången (när A3:C3 är tomt) en annan metod för att hitta den sista ifyllda är att söka "baklänges" efter jokertecknet "*" i kolumnen Range("A:A").Find(What:="*", SearchDirection:=xlPrevious).Offset(1, 0).Activate Då räcker det att det finns en enda cell med data. xlDown kräver minst två rader data för att funka bra. Dessutom behöver du inte veta vilket format filen har (hur många rader den klarar av) - vilket kräv som du vill köra XlUpp Du kan även skippa klipp/klistra och köra en tilldelning istället. Då blir din kod bara en rad: Sub Makro3() Range("A1").End(xlDown).Offset(1, 0).Resize(1, 3).Value = Range("A2:C2").Value End Sub Men jag misstänker att din kod är enklare att förstå om två år. 1 Citera Länk till kommentar Dela på andra webbplatser Fler delningsalternativ...
Deppodi Postad Oktober 3, 2022 Författare Dela Postad Oktober 3, 2022 10 timmar sedan, MH_ sade: Om du ändrar Range("A2").Select till Range("A1").Select Så funkar det även första gången (när A3:C3 är tomt) en annan metod för att hitta den sista ifyllda är att söka "baklänges" efter jokertecknet "*" i kolumnen Range("A:A").Find(What:="*", SearchDirection:=xlPrevious).Offset(1, 0).Activate Då räcker det att det finns en enda cell med data. xlDown kräver minst två rader data för att funka bra. Dessutom behöver du inte veta vilket format filen har (hur många rader den klarar av) - vilket kräv som du vill köra XlUpp Du kan även skippa klipp/klistra och köra en tilldelning istället. Då blir din kod bara en rad: Sub Makro3() Range("A1").End(xlDown).Offset(1, 0).Resize(1, 3).Value = Range("A2:C2").Value End Sub Men jag misstänker att din kod är enklare att förstå om två år. Bra tips, tack! Det här ska jag testa. Det är ju det det handlar om, att hitta andra vägar som fungerar på ett lite smidigare sätt! Jag uppskattar att du delar ditt svar, dels för att jag har förstått att det är en sport i sig att försöka filtrera bort så mycket onödig kod som möjligt - i alla fall med de utvecklare som jag har pratat med. Och dels för att det utvecklar mina kunskaper när jag får ta del av era tips och tricks. Nu har jag inte hålla på med makro så länge, men upplever du ibland att du går tillbaka till gamla makro och tänker "Vad är det jag har gjort här egentligen?!" Oavsett, pluspoäng för att få ner hela makro till en rad. Jag tycker det var snyggt! ⭐ Citera Länk till kommentar Dela på andra webbplatser Fler delningsalternativ...
Recommended Posts
Delta i dialogen
Du kan skriva svaret nu och registrera dig senare, Om du har ett konto, logga in nu för att svara på inlägget.