• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Fout met VBA .copy

Status
Niet open voor verdere reacties.

Hunuloeloe

Gebruiker
Lid geworden
12 sep 2016
Berichten
311
Goedemorgen,

Ik heb een code die zorgt dat gegevens gekopieerd worden naar een ander bestand. Nu wil ik echter dat cel A30 ook meegenomen wordt maar dat gaat fout:
Code:
ActiveSheet.Range("B1:B24,B26:B27, [COLOR="#FF0000"]A30[/COLOR]").Copy

Was:
Code:
ActiveSheet.Range("B1:B24,B26:B27").Copy

Iemand een idee?
 
Misschien zo:
Code:
ActiveSheet.Range("B1:B24,B26:B27,[B][COLOR="#FF0000"]A30:A30[/COLOR][/B]").Copy

Tijs.
 
Nee dat werkt niet :confused: Weer zelfde foutcode
Ik moet zeggen de cel A30 is een samengevoegde cel omdat hier een opmerking ingevuld kan worden (het ziet er mooier uit om meerdere cellen samen te voegen :)
 
zou A30 dan iets moeten worden als "A30:C30" uitgaande van drie samengevoegde cellen
 
LOL, het fulmineren tegen gecombineerde/samengevoegde cellen hier in het Excel forum komt mij nu weer helder voor de geest. ;) Hopelijk helpt de tip van Haije je vooruit. :)

Tijs.
 
Code:
ActiveSheet.Range("B1:B24,B26:B27,A30:D34").Copy
Nog steeds foutcode
 
@Hunoloeloe: Zag je dat ook bij je oorspronkelijke code? (Dus met 2 niet-aansluitende ranges)? Indien ja, dan heb je ons (zeer succesvol, chapeau!) het bos in gestuurd met je startposting. :mad:

Tijs.
 
Deze code werkte goed:
Code:
ActiveSheet.Range("B1:B24,B26:B27").Copy

Alleen ik wil nog 1 cel extra eraan toevoegen (of meerder cellen samengesteld......)
 
Je zegt een paar keer een fout te krijgen.
Misschien handig om die hier ook te vermelden?
 
Test deze eens:
Code:
Sub cobbe()
i = 1
    For Each area In ThisWorkbook.Sheets(1).Range("B1:B24,B26:B27, A30").Areas
        For Each cl In area
          Cells(i, 12) = Range(cl.Address).Value
          i = i + 1
        Next cl
    Next area
End Sub
 
Cobbe jouw gedeelte werkt wel maar dan krijg ik gelijk een fout in een andere gedeelte van de code, Hierbij de volledige originele code:
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ActiveSheet.Range("B1:B24,B26:B27").Copy
Workbooks.Open Filename:="I:\Anthony\Tool\Database.xlsx"
With ActiveSheet
eRow = .Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
.Cells(eRow, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
.Cells.EntireColumn.AutoFit
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
ActiveSheet.Range("B2:B17,B22:B24").ClearContents
Application.ScreenUpdating = True
End Sub

Met jouw stuk code erin verwerkt:
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
i = 1
    For Each area In ThisWorkbook.Sheets(1).Range("B1:B24,B26:B27, A30").Areas
        For Each cl In area
          Cells(i, 12) = Range(cl.Address).Value
          i = i + 1
        Next cl
    Next area
Workbooks.Open Filename:="I:\Anthony\Tool\Database.xlsx"
With ActiveSheet
eRow = .Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
[COLOR="#FF0000"].Cells(eRow, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True[/COLOR]
.Cells.EntireColumn.AutoFit
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
ActiveSheet.Range("B2:B17,B22:B24").ClearContents
Application.ScreenUpdating = True
End Sub

Waarbij het rode gedeelte een foutcode bijkomt:
Fout 1004 tijdens uitvoering:
Methode PasteSpecial van klassen Range is mislukt.
 
Wat is de waarde van eRow als je via F8 werkt?
 
Mooi overzichtelijk bestand.

Ergo:

niet-aaneengesloten gebieden kunnen alleen gekopieerd worden als:
- alle gebieden dezelfde kolommen hebben
- alle gebieden dezelfde rijen hebben

de lege cellen worden dan genegeerd.

Code:
Sub M_snb()
    ActiveSheet.Range("B1:B24,B26:B27,B30,b45").Copy Cells(1, 10)
    ActiveSheet.Range("B1:D1,F1:G1,J1").Copy Cells(1, 16)

    ActiveSheet.Range("B1:C24,B26:C27,B30:C30,B45:C45").Copy Cells(1, 10)
    ActiveSheet.Range("B1:D3,F1:G3,J1:J3").Copy Cells(1, 16)
End Sub
 
Laatst bewerkt:
Verklaar je nader, ik klik op F8 als ik in VBA zit maar dan scrolt die door de bovenste regels van de code..
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan