Avatar billede drschmitz Nybegynder
03. august 2005 - 11:23 Der er 10 kommentarer og
1 løsning

Flytning af rækker mellem forskellige excelark, vha. VB

Hvordan koder man en makro til at flytten en række fra et excelark til et andet?
Kendetegnet der indikerer om rækken skal flyttes eller ej står i kolonne a og starter i række 2. Det er et 6 cifret nummer.
I det nye ark skal den flyttede række indsættes i den første tomme/ledige række
Avatar billede kabbak Professor
03. august 2005 - 12:07 #1
Sub Flytrække()
Lr = Range("A65536").End(xlUp).Row
For C = Lr To 2 Step -1
If Cells(C, 1).Value = 123456 Then ' ret til dit nummer
    RW = Sheets("Ark2").Range("A1").End(xlDown).Offset(1, 0).Row

    Rows(C & ":" & C).Copy Sheets("Ark2").Range("A" & RW)
    Rows(C & ":" & C).Delete Shift:=xlUp
    End If
    Next
End Sub
Avatar billede drschmitz Nybegynder
03. august 2005 - 12:27 #2
I linie 5 kommer der en fejl

Run-time error '9':

Subscript out of range
Avatar billede kabbak Professor
03. august 2005 - 13:18 #3
Hvis det er her

  RW = Sheets("Ark2").Range("A1").End(xlDown).Offset(1, 0).Row

er det fordi du ikke har et ark ved navn "Ark2", ret det til det ark som der skal flyttes over på.
Avatar billede drschmitz Nybegynder
03. august 2005 - 14:01 #4
Jeg fandt selv den fejl, men istedet kom der en fejl 1004 i samme linie "application-defined or objekt-defined error"
Avatar billede kabbak Professor
03. august 2005 - 14:15 #5
hvilken excel version har du
Avatar billede kabbak Professor
03. august 2005 - 14:18 #6
nu har jeg sat dim på, kan det være det.

Sub Flytrække()
Dim LR As Long, RW As Long, C As Long
LR = Range("A65536").End(xlUp).Row
For C = LR To 2 Step -1
If Cells(C, 1).Value = 123456 Then ' ret til dit nummer
    RW = Sheets("Ark2").Range("A1").End(xlDown).Offset(1, 0).Row

    Rows(C & ":" & C).Copy Sheets("Ark2").Range("A" & RW)
    Rows(C & ":" & C).Delete Shift:=xlUp
    End If
    Next
Avatar billede drschmitz Nybegynder
03. august 2005 - 14:28 #7
Samme problem. Jeg benytter excel 2003
Avatar billede kabbak Professor
03. august 2005 - 14:41 #8
Ok fejlen er at der skal vær data i A1 og A2 i ark2, for at blive fejel kvit.

Nu tjekker den om der er noget i A2, så skulle fejlen undgås, jeg regner med at du bruger overskrifter.

Sub Flytrække()
Dim LR As Long, RW As Long, C As Long
LR = Range("A65536").End(xlUp).Row
For C = LR To 2 Step -1
If Cells(C, 1).Value = 123456 Then ' ret til dit nummer
If Sheets("Ark2").Range("A2") <> "" Then
    RW = Sheets("Ark2").Range("A1").End(xlDown).Offset(1, 0).Row
    Else
    RW = 2
    End If

    Rows(C & ":" & C).Copy Sheets("Ark2").Range("A" & RW)
    Rows(C & ":" & C).Delete Shift:=xlUp
    End If
    Next
End Sub
Avatar billede drschmitz Nybegynder
03. august 2005 - 15:42 #9
Super, den fungerer.

Lige et sidste relaterende spg.

Hvis jeg ønsker den skal flytte mere end et nummer (det 6-cifret, 123456)

If Cells(C, 1).Value = 123456 Then ' ret til dit nummer

Jeg har prøvet med ','  'and' og 'or' men det er vidst ikke det rigtige

Eks: If Cells(C, 1).Value = 123456, 654321 Then ' ret til dit nummer
Avatar billede kabbak Professor
03. august 2005 - 17:04 #10
If Cells(C, 1).Value = 123456 or Cells(C, 1).Value = 654321 Then ' ret til dit nummer
Avatar billede drschmitz Nybegynder
03. august 2005 - 17:35 #11
Kanon hjælp Kabbak, mange tak
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
Kurser inden for grundlæggende programmering

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