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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.