Jeg sidder og roder med at får VB til at kopiere nogle variable linier i et Excel ark, linierne der skal kopieres bliver automatisk markeret med "1" i kolonne B. Jeg har foreløbig følgende kode, men får fejlmeddelelse 1004 (Select method of Range class failed), fejlen opstår ved ( Cells(r, Xkol).Select )
Er der nogen der kan hjælpe mig videre?
Dim Xkol As Integer
Private Sub CommandButton2_Click() Worksheets("Data ind").Activate ActiveSheet.Range("B60000").Select Selection.End(xlUp).Select rEnd = ActiveCell.Row - 1
For r = 2 To rEnd 'gennemgår rækkerne fra 2 til enden for "0" Xkol = 2 Cells(r, Xkol).Select If ActiveCell.Value = "" Then
Else If ActiveCell.HasFormula Then
If ActiveCell.Value = 0 Then
Else Selection.Cells(r, Xkol = "C").Copy Worksheets("Bogføring bilag").Activate ActiveSheet.Range("A12").Select Selection.EntireRow.Insert Selection.End(xlUp).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End If End If End If Next r
1. Hvis du ikke har koden i en Userform, men i et ark modul, vil den fejle, da du ikke fra et arkmodul kan arbejde i andre ark.
2. i dit loop ændrer du det aktive ark til Worksheets("Bogføring bilag"), det skal ændres tilbage med Worksheets("Data ind").Activate, ellers kører koden i det forkerte ark,
OK, jeg har prøvet at lave koden, som jeg tror du mener.
Hvis en celle i B kolonnen har en formel og den værdi den viser er 1, så kopiere den hele rækken.
Private Sub CommandButton2_Click()
Worksheets("Data ind").Activate rEnd = ActiveSheet.Range("B60000").End(xlUp).Row - 1 Xkol = 2 For r = 2 To rEnd 'gennemgår rækkerne fra 2 til enden for "1" Cells(r, Xkol).Select If Cells(r, Xkol).HasFormula And Cells(r, Xkol).Value = 1 Then Sheets("Bogføring bilag").Rows("12:12").Insert Shift:=xlDown Rows(Cells(r, Xkol).Row & ":" & Cells(r, Xkol).Row).Copy Sheets("Bogføring bilag").Range("A12").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If Next r End Sub
Hej, jeg sidder lige og arbejder viderer på det. Nu har jeg flyttet koden over i en Userform og det ser ud til at hjælpe. Jeg kan bare ikke lige helt forstå hvad der sker her:
Så nu har jeg ændret lidt på udtrykket ovenfor, så det nu ser ud til at virke, men jeg har stadig et problem. Det er at jeg skal have den til at kopiere celleindholdet fra cellen i kolonne c i de rækker den finder. Indholdet skal kopieres over i "bogførings bilag", som values. VB koden ser foreløbig således ud:
Dim Xkol As Integer
Private Sub CommandButton1_Click() Worksheets("Data ind").Activate rEnd = ActiveSheet.Range("B60000").End(xlUp).Row - 1 Xkol = 2 For r = 2 To rEnd 'gennemgår rækkerne fra 2 til enden for "1" Cells(r, Xkol).Select If Cells(r, Xkol).HasFormula And Cells(r, Xkol).Value = 1 Then Worksheets("Bogførings bilag").Activate ActiveSheet.Range("B12").EntireRow.Insert Rows(Cells(r, Xkol).Row & ":" & Cells(r, Xkol).Row).Copy Worksheets("Bogførings bilag").Range("A12").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If Next r
Hvilke værdier skal over, hele rækken eller kun 1 celle, den du tjekker på er i B kolonnen ?? Du har skiftet ActiveSheet til Worksheets("Bogførings bilag")' derfor kan den ikke kopiere med Rows(Cells(r, Xkol).Row & ":" & Cells(r, Xkol).Row).Copy
Private Sub CommandButton1_Click() Worksheets("Data ind").Activate rEnd = ActiveSheet.Range("B60000").End(xlUp).Row - 1 Xkol = 2 For r = 2 To rEnd 'gennemgår rækkerne fra 2 til enden for "1" Cells(r, Xkol).Select If Cells(r, Xkol).HasFormula And Cells(r, Xkol).Value = 1 Then Worksheets("Bogførings bilag").Activate ActiveSheet.Range("B12").EntireRow.Insert Worksheets("Data ind").Rows(Cells(r, Xkol).Row & ":" & Cells(r, Xkol).Row).Copy Worksheets("Bogførings bilag").Range("A12").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If
Det er god hjælp du kommer med tak for det. Det er kun værdien for 1 celle der skal over, det er cellen i c kolonnen.
Og så udfører den ikke hanlingen mere end en gang. Det er meningen at den skal gennemsage kolonne b for celler med værdien 1 og så kopiere celle indholdet fra c kolonnen over i arket "Bogførings bilg".
Skal rækken i ("Data ind"), slettes når den er overført, eller skal der skrives en værdi i B kolonnen, i stedet for den formel der ligger der og som har værdien 1
Prøv denne, men den vil sætte den samme ind igen, næste gang du kører koden, hvis du ikke ændrer i B kolonnen.
Public Sub CommandButton2_Click() Worksheets("Data ind").Activate rEnd = ActiveSheet.Range("B60000").End(xlUp).Row - 1 Xkol = 2 For r = 2 To rEnd 'gennemgår rækkerne fra 2 til enden for "1" Cells(r, Xkol).Select If Cells(r, Xkol).HasFormula And Cells(r, Xkol).Value = 1 Then Cells(r, Xkol + 1).Copy Sheets("Bogføring bilag").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If Next r End Sub
Private Sub CommandButton2_Click() Worksheets("Data ind").Activate rEnd = Worksheets("Data ind").Range("B60000").End(xlUp).Row - 1 Xkol = 2 For r = 2 To rEnd 'gennemgår rækkerne fra 2 til enden for "1" If Worksheets("Data ind").Cells(r, Xkol).HasFormula And Worksheets("Data ind").Cells(r, Xkol).Value = 1 Then Worksheets("Data ind").Cells(r, Xkol + 1).Copy Sheets("Bogføring bilag").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If Next r End Sub
hvordan ser din formel id i B kolonnen, er der forskel på den der hvor den kopierer over og de andre den ikke kopierer.
Prøv at sætte formlen herind
Synes godt om
Ny brugerNybegynder
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.