Avatar billede hjald8 Nybegynder
22. november 2004 - 20:54 Der er 10 kommentarer og
2 løsninger

Indsæt række nedenunder med formler fra række ovenfor via VBA

Hej

Jeg har et ark, hvor jeg gerne vil have Excel til at indsætte en række - inkl. formler og formater - nedenunder den række der arbejdes i - når fx feltet (L, rækkenr)(fx L2) har en bestemt værdi (fx 1).

Jeg har fundet denne kode men kan ikke helt få det til at fungere:

Sub TilføjRække()
        R = Range("L300").End(xlUp).Row
        Range("A" & R - 1).Select
        ActiveCell.EntireRow.Insert Shift:=xlDown
        Range("A" & R - 1).Select
        For I = 1 To 11
    If ActiveCell.Offset(-1, I).HasFormula Then
        ActiveCell.Offset(-1, I).AutoFill _
        Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _
        , Type:=xlFillDefault
    End If
    Next
End Sub

På forhånd tak for hjælpen.
Avatar billede kabbak Professor
22. november 2004 - 21:46 #1
Nu indsætter den en tom linie neden under den række du står i, og tager formler med ned.

Du skal selv køre makroen

Sub TilføjRække()
        ActiveCell.Offset(1, 0).EntireRow.Insert Shift:=xlDown
        R = ActiveCell.Row
        Range("A" & R + 1).Select
        For I = 1 To 11
    If ActiveCell.Offset(-1, I).HasFormula Then
        ActiveCell.Offset(-1, I).AutoFill _
        Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _
        , Type:=xlFillDefault
    End If
    Next
End Sub
Avatar billede hjald8 Nybegynder
22. november 2004 - 21:57 #2
Hej Kabbak
Du kan jo se, at jeg har fundet det fra et af dine tidligere svar.
Men den kopier ikke formlerne i kolonne A.
Dernæst - man kan altså ikke aktivere makroen ved at værdien i en celle forandre sig, eller?
Avatar billede sjap Praktikant
22. november 2004 - 22:26 #3
Højreklik på faneblade og vælg "Vis programkode" og indsæt følgende:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If Range("L" & ActiveCell.Row) = 1 Then
    Range("L" & ActiveCell.Row) = 0 'ellers bliver den bare ved og ved og ved...
    TilføjRække
End If

End Sub


BEMÆRK at hvis du står i f.eks. L2 og skriver 1 og så flytter til L3 (sker f.eks. ved tryk på Enter) så er Activecell L3 og så fanger programmet IKKE at L2 er ændret til 1. Hvis du derefter flytter op til L2 igen, så fanger programmet 1-tallet og udfører TilføjRækker.

Du kan evt. overveje i stedet at checke alle tal i L om de er 1.
Avatar billede kabbak Professor
22. november 2004 - 22:36 #4
jeg er enig med sjap, jeg ville ikke turde at gøre den automatisk, men nu er koden rettet.

Sub TilføjRække()
        ActiveCell.Offset(1, 0).EntireRow.Insert Shift:=xlDown
        r = ActiveCell.Row
        Rows(r).Copy
        Range("A" & r + 1).PasteSpecial Paste:=xlFormats, Operation:=xlNone '
        For I = 0 To 13
    If ActiveCell.Offset(-1, I).HasFormula Then
        ActiveCell.Offset(-1, I).AutoFill _
        Destination:=Range(ActiveCell.Offset(-1, I), ActiveCell.Offset(0, I)) _
        , Type:=xlFillDefault
    End If
    Next
End Sub
Avatar billede hjald8 Nybegynder
22. november 2004 - 22:49 #5
Tusind tak - begge. Jeg kan godt se, at det giver problemer med denne automatik - hvis brugeren 'kommer til' at skrive i L(nr) uhensigtmæssigt. Måske burde jeg checke sidste L(nr) som er udfyldt. Men det løser principielt ikke problemet - så kan jeg risikere at få 'sjove' tomme rækker?

L(nr) bliver udfyldt på baggrund af indtastninger fra brugeren i den pågældende række. Nogle brugere skal bruge 30 rækker, andre op til 200 rækker.

??
Avatar billede kabbak Professor
22. november 2004 - 22:53 #6
du kan også give makroen en tast feks CTRL + N
Avatar billede kabbak Professor
22. november 2004 - 22:58 #7
CTRL + N er normalt reseveret til ny mappe, men er der nogen der bruger den. ?
Avatar billede kabbak Professor
22. november 2004 - 23:01 #8
du får også lige et svar
Avatar billede hjald8 Nybegynder
22. november 2004 - 23:10 #9
Den bedste løsning er nok, at brugeren ved igangsætning af arket, svarer på hvor mange rækker vedkommende har brug for 'ca' - evt via en dialogboks. Det kan så aktivere en kopiering efter et defineret behov.

(Det er udelukkende for at spare plads i den samlede projektmappe, samt ved udskift af arket).

Tusind tak for input. Hvem skal jeg dog honorere. Må jeg dele? Kabbak 30 og Sjap 15? Hvis jeg må, så giv et svar.
Avatar billede kabbak Professor
22. november 2004 - 23:13 #10
ok for mig
Avatar billede sjap Praktikant
22. november 2004 - 23:37 #11
Det er rigeligt til mig - så mange tak :0)
Avatar billede kabbak Professor
23. november 2004 - 08:02 #12
tak for point ;-)
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