Avatar billede momc Nybegynder
26. maj 2010 - 11:40 Der er 14 kommentarer og
1 løsning

Makro til at indsætte række og kopiere formel samt betinget formatering.

Jeg skal bruge en makro til at indsætte en række under første i den første ledige række.

Hvor den skal kopiere formlen med samt betinget formatering fra forrige celle.

Formlen er i dette tilfælde =TÆLV(E22:IV22) den skal jo så blive til =TÆLV(E23:IV23)

Eks. hvis jeg har noget stående i række 22 skal der bare klikkes på en knap og der insættes en række 23 med formlen (=TÆLV (E23:IV23) og med en betinget formatering der er kopieret ned.

Håber det giver mening.

fandt denne fra andet webside. Men kunne ikke hitte ud af at indsætte og bruge den.



Public Function FindNextTomme(ByVal rCell As Range) As Range
'Finder første tomme celle nedad i en kolonne.

On Error GoTo ErrorHandle

With rCell
    'Hvis udgangscellen er tom, er det den første tomme celle.
    If Len(.Formula) = 0 Then
        Set FindNextTomme = rCell
    'Hvis cellen lige under udgangscellen er tom
    ElseIf Len(.Offset(1, 0).Formula) = 0 Then
        Set FindNextTomme = .Offset(1, 0)
    Else
        'Finder cellen efter sidste celle med indhold.
        '.End(xlDown) svarer til at trykke CTRL + pil ned.
        Set FindNextTomme = .End(xlDown).Offset(1, 0)
    End If
End With

Exit Function

ErrorHandle:
MsgBox Err.Description & ", Function FindNextTomme."
End Function
Avatar billede jkrons Professor
26. maj 2010 - 15:14 #1
Er det kun formlen, der skal kopieres, eller skal alle data fra rækken kopieres med?
Avatar billede jkrons Professor
26. maj 2010 - 15:56 #2
Hvis det er hele rækken, der skal kopieres, kan noget i denne stil bruges:


    Range("A65000").End(xlUp).EntireRow.Copy
    Range("A65000").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Select

Koden skal ligge på knappen.
Avatar billede momc Nybegynder
27. maj 2010 - 07:31 #3
Det er kun formlen og den betingede formatering der skal kopieres.

Har prøvet den vba du har den virker ikke. får en fejl der siger.
Compile error:
Invalid outside procedure.

Der er x1Up markeret. Den i første linie:

  Range("A65000").End(xlUp).EntireRow.Copy
    Range("A65000").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Select
Avatar billede jkrons Professor
27. maj 2010 - 10:17 #4
Koden skal lægges på en kontrolelementknap, så den kommer til at se ud noget i denne stil:

Private Sub CommandButton1_Click()
    Range("A65000").End(xlUp).EntireRow.Copy
    Range("A65000").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.Selec
End Sub

eller hvad din knap nu hedder.

Hvis den kun skal kopiere formlen og den betingede formatering, er det nødvendigt at vide, hvilke celler, der er betinget formaterede og i hvilken celle formlen står.
Avatar billede jkrons Professor
27. maj 2010 - 10:17 #5
og der skulle have


    ActiveCell.Select

til sidst
Avatar billede momc Nybegynder
27. maj 2010 - 10:36 #6
Den er næsten perfekt. Hvis den kun kopiere kolonne B,C,D og sætter en tom celle ind nedenunder. Ville det gøre sådan at den ikke overskriver det der står længere nede.

Er det muligt?
Avatar billede jkrons Professor
27. maj 2010 - 12:12 #7
Ikke i denne variant. Den vil altid indsætte noget under den sidste række, som har indhold i A-kolonnen. Der kan altså ikke stå noget længere nede, i hvert fald i A. Har du noget i B, C, D, bør den ændres, så den tager udgangspunkt i den længste kolonne.
Avatar billede momc Nybegynder
31. maj 2010 - 09:08 #8
Jeg har noget i B+C.

Dette bliver overskrevt. Hvis jeg indsætter med den VBA du har skrevet.
Avatar billede jkrons Professor
31. maj 2010 - 14:41 #9
Prøv at se om dette er bedre:

Private Sub CommandButton1_Click()
  lstrow = ActiveSheet.UsedRange.Rows(UBound(ActiveSheet.UsedRange.Value)).Row
  Range("A" & lstrow).EntireRow.Copy
  Range("A" & lstrow).Offset(1, 0).Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
  ActiveCell.Select
End Sub
Avatar billede momc Nybegynder
01. juni 2010 - 07:05 #10
Jeg kan godt se din idé. Den bliver bare ved med at kopiere hele rækken. Kan man få den til at stoppe dette? Så det kun er kolonne A,B,C & D?
Avatar billede jkrons Professor
01. juni 2010 - 22:38 #11
Prøv med

Private Sub CommandButton1_Click()
  lstrow = ActiveSheet.UsedRange.Rows(UBound(ActiveSheet.UsedRange.Value)).Row
  Range("A" & lstrow & ":D" & lstrow).Copy
  Range("A" & lstrow).Offset(1, 0).Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
  ActiveCell.Select
End Sub
Avatar billede momc Nybegynder
02. juni 2010 - 08:03 #12
Hmmm... tror jeg gør noget galt for kan ikke få det til at virke efter hensigten?

Den sætter ind i række 72?
Avatar billede jkrons Professor
03. juni 2010 - 16:04 #13
Hvor forventer du at den sætter ind?
Avatar billede momc Nybegynder
09. juni 2010 - 06:44 #14
Det er meningen at den skal sætte ind under den første frie række. Da det er forskelligt fra ark til ark. Og da der vil blive bygget mere og mere på.

den vil lige pludselig heller ikke give mig tilladelse til at indsætte en VBA på en knap???

Jeg giver op :(.

Send et svar og du får point!
Avatar billede jkrons Professor
09. juni 2010 - 15:44 #15
Jeg skal ikke kunne sige, hvad der sker hos dig. Hos mig gør den netop det, du efterlyser. M;en her er et svar.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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