27. december 2004 - 19:21Der er
15 kommentarer og 1 løsning
Indsæt linje via makro
Jeg har en makro, jeg tidligere har fået lavet er på eksperten.dk:
Sub IndsaetRow() ' ' Indsæt række ' 29-01-2004 ' R = Range("A65536").End(xlUp).Row 'finder sidste række i A kolonnen Range("A" & R - 1).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række Range("A" & R - 1).Select For I = 1 To 12' ret her for flere kolonner 12 = M If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 12 kolonner til højre End If Next End Sub ------
Jeg vil gerne have den til at indsætte en linje når der ikke står noget i kolonne A. Den første række den skal indsætte er mellem række 4 og 5.
Når jeg kører makoren indsætter den en række mellem 1 og 2.
Nej; Der kommer aldrig til at stå noget i A1:A2. I A3 Står der "Dato" og i A4 er så 1. dato (27-12-04) i A5 er tom - (Det er hele rækken - levn fra det du lavede til mig for et år siden!) Række 6 - Summer op på det der står i kolonnerne fra række 4.
Det skal så være muligt at indsætte rækker under sidste skrevne række (styres på kolonne A). Der skal kopiers formlerne med fra rækken ovenfor.
Sub IndsaetRow() ' ' Indsæt række ' 29-01-2004 ' R = Range("A65536").End(xlUp).Row 'finder sidste række i A kolonnen if R < 5 then R = 6 ' ny linie Range("A" & R - 1).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række Range("A" & R - 1).Select For I = 1 To 12' ret her for flere kolonner 12 = M If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 12 kolonner til højre End If Next End Sub
Kan du gi´ et svar! Samtidig kan du måske hjælpe mig med en ekstra ting: Jeg glemte nemlig at få tilføjet værdien jeg har i celle L2 til cellen i den ny række i kolonne H!
koden her vil da ikke indsætte før efter række 4, så det forstår jeg ikke.
Sub IndsaetRow() ' ' Indsæt række ' 29-01-2004 ' r = Range("A65536").End(xlUp).Row 'finder sidste række i A kolonnen If r < 6 Then r = 6 ' ny linie Range("A" & r - 1).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række Range("A" & r - 1).Select For I = 1 To 12 ' ret her for flere kolonner 12 = M If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 12 kolonner til højre End If Next Range("H" & ActiveCell.Row) = [L2] End Sub
kabbak> Nej den indsætter ikke noget før række 4, men 3 gange række 5 og så 6 og 7 osv. Det betyder, at de 2 nederste rækker burde stå i række 5 og 6., men rykker med ned efterhånden som jeg kører makroen.
kabbak>Når jeg kører makroen første gang indsættes en række 5. Jeg skriver i rækken (også i kolonne A) og kører makroen igen. Nu indsættes der i række 5 igen så det jeg skrev før nu rykker ned i række 6. Det skal den ikke. Nu burde makroen indsætte i række 6. Næste gang skal der indsættes i række 7 osv.
Hvis du skriver f.eks. "Total" i kolonne A, ud for din sumlinie er det nemmere, så kan du køre med din gamle kode.
Sub IndsaetRow() ' ' Indsæt række ' 29-01-2004 ' r = Range("A65536").End(xlUp).Row 'finder sidste række i A kolonnen Range("A" & r - 1).Select ActiveCell.EntireRow.Insert Shift:=xlDown ' indsætter række lige over sidste række Range("A" & r - 1).Select For I = 1 To 12 ' ret her for flere kolonner 12 = M If ActiveCell.Offset(-1, I).HasFormula Then ' har celler i rækken ovenover en formel ActiveCell.Offset(-1, I).AutoFill _ Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _ , Type:=xlFillDefault ' hvis overstående celler har en formel trækkes den ned, 'Fra A kolonnen og 12 kolonner til højre End If Next Range("H" & ActiveCell.Row) = [L2] End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.