Avatar billede h_s Forsker
27. december 2004 - 19:21 Der 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.

Hvem kan hjælpe?
Avatar billede kabbak Professor
27. december 2004 - 19:35 #1
hvad mener du, hvis der ikke står noget i a1 til A4, skal den sætte ny linie ind mellam 4 og 5, men hvad skal den ellers. ?
Avatar billede h_s Forsker
27. december 2004 - 19:44 #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.

Hjælper det?
Avatar billede kabbak Professor
27. december 2004 - 19:49 #3
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


prøv at teste denne
Avatar billede kabbak Professor
27. december 2004 - 19:51 #4
if R < 5 then R = 6 ' ny linie
skal nok være

if R < 6 then R = 6 ' ny linie
Avatar billede h_s Forsker
27. december 2004 - 19:56 #5
Den er fin!

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!

Hvad tilføjer jeg makroen
Avatar billede kabbak Professor
27. december 2004 - 20:16 #6
...
Next
Range("H" & ActiveCell.Row) = [L2]
End Sub

godt nytår ;-))
Avatar billede h_s Forsker
27. december 2004 - 20:21 #7
kabbak> Jeg var lidt for hurtig.
1 - 3. gang indsættes i række 5 og så 6, så 7 osv.

Det betyder at de rækker der burde være 2 og 3 rykker længere og længere ned!
Avatar billede kabbak Professor
27. december 2004 - 20:26 #8
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
Avatar billede h_s Forsker
27. december 2004 - 20:43 #9
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.
Avatar billede kabbak Professor
27. december 2004 - 20:52 #10
Den indsætter rækker, og det betyder at de 2 nederste altid rykker nedad.
Det skal de, ellers virker din sum på sidste linie ikke.

Hver gang makroen køres, skal der skrives i den nye række i A kolonnen, ellers bruger den række 5 igen.
Avatar billede h_s Forsker
27. december 2004 - 21:00 #11
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.
Avatar billede kabbak Professor
27. december 2004 - 21:08 #12
Ok , jeg tror jeg ved hvor det går galt.

du er nødt til at have data i række 4 og 5, begge med dine formler,inden du kører makroen
og i række 6 skal du have dine summer.

Hvis du ikke har de 2 rækker med formler vil den indsætte forkert
Avatar billede kabbak Professor
27. december 2004 - 21:14 #13
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
Avatar billede kabbak Professor
27. december 2004 - 21:15 #14
så sætter den altid linien ind 2 række over din sumlinie
Avatar billede h_s Forsker
27. december 2004 - 21:25 #15
Jeg kan stadig ikke få den til at virke, så jeg har skrevet noget i sumlinien i kolonne A - Så virker den... Tak!

Også godt Nytår til dig!
Avatar billede kabbak Professor
27. december 2004 - 21:30 #16
tak og god vind i det nye år. ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester