• 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.

VBA: Kopiëren van variabel bereik naar ander variabel bereik

Status
Niet open voor verdere reacties.

RoCompy87

Gebruiker
Lid geworden
13 nov 2006
Berichten
284
Hallo allemaal,

Ik wil de waarden uit een variabel bereik kopiëren naar een ander bereik dat variabel is bepaald. Ik heb nu onderstaande code:

Code:
        i = .Columns(5).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
        l = 2
            For Each c In .Range(Cells(18, 5), Cells(i, 5))
                If c.Value <> "" Then Sheets(21).Range(Cells(l, 33), Cells(l, 37)).Value = .Range(Cells(c.Row, 5), Cells(c.Row, 9)).Value: l = l + 1
            Next c

Deze code resulteert steeds in een error 1004. Als ik het bereik op sheet 21 niet variabel maak, werkt het wel, maar daarmee heb ik geen oplossing voor mijn probleem.

Code:
If c.Value <> "" Then Sheets(21).Range("AG2:AK2").Value = .Range(Cells(c.Row, 5), Cells(c.Row, 9)).Value 'Deze contructie werkt wel....

Heeft iemand een oplossing? Ik zou bijvoorbeeld "Sheets(21).Range(Cells(l, 33), Cells(l, 37))" ook wel aan een naam kunnen koppelen in Excel, maar om dat nu for each c te moeten doen, daar wordt de code ook niet sneller van...

Alvast bedankt :)
 
Je probeert een bereik in het ene werkblad te vullen met het bereik van het andere werkblad.
Dat kan, máár VBA je moet wel in de code aangeven dat de Cells uit een ander werkblad komen.

Je krijgt dan zo iets:

Code:
            With Sheets(21)
                .Range(.Cells(l, "AG"), .Cells(l, "AK")).Value = Range(Cells(c.Row, 5), Cells(c.Row, 9)).Value
                l = l + 1
            End With

Doordat er een . voor Range en Cells staat, verwijst deze naar Sheets(21).
Zet je wel een punt bij Range maar niet bij Cells dan verschijnt er dus een foutmelding.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan