Range in een variabele plaatsen lukt niet.

Status
Niet open voor verdere reacties.

continent

Gebruiker
Lid geworden
2 dec 2010
Berichten
36
Ik heb een range bestaande uit startrij 2, startkolom 5, eindrij 8 en eindkolom 5 (dus E2:E8) in scheet data.
In sheet formulier zeg ik mijnrange = data.Range(Cells(startrij,startkolom), Cells(eindrij, eindkolom)).

Maar was het maar zo simpel, dat werkt dus niet. Maar waarom niet en... hoe los je dat op.
 
Zonder te kunnen zien wat precies je bedoeling is, maak er eens dit van:
Code:
Set mijnrange = Sheets("Data").Range(Cells(startrij, startkolom), Cells(eindrij, eindkolom))
 
Dit is precies wat ik bedoel. Ik zal er nog een keer "Set"voor zetten
maar volgens mij had ik die variant al gehad.
Nog ff een voorbeeld file, zeg 't maar.
Vandaag 5 uur aan besteed...

Bekijk bijlage tmp.xlsm
 
Laatst bewerkt:
Kijk nog eens goed naar jouw code en mijn voorbeeld.
 
Kijk nog eens goed naar jouw code en mijn voorbeeld.

Als je "data" bedoeld dan is het betreffende sheet genaamd "data" maar de codename is ook "data".
Maar wellicht doel je op iets anders.

Lukt mijn tmp sheet bij jou wél?
 
Laatst bewerkt:
Het ligt eraan in welk blad je de code draait.

Met onderstaande code maakt dat niet uit.
Code:
With data
 Set mijnbereik = .Range(.Cells(2, kol), .Cells(rij, kol))
End With
Blad1.[F1].Resize(rij - 1) = mijnbereik.Value
 
Het ligt eraan in welk blad je de code draait.

Met onderstaande code maakt dat niet uit.
Code:
With data
 Set mijnbereik = .Range(.Cells(2, kol), .Cells(rij, kol))
End With
Blad1.[F1].Resize(rij - 1) = mijnbereik.Value

In het blad formulier.
 
In de quote van je staat iets dat je nog niet hebt gelezen.
 
@edmoor

In het blad formulier.

Inderdaad deze truc lukt met "with".

Maar wellicht kun je mij vertellen waarom mijn insteek
niet werkt. Wat mis ik blijkbaar aan kennis? Dat zou ik wel
heel prettig vinden. had echt de illusie dat het zou werken.

In ieder geval alvast bedankt.
 
Jouw illusie werkt in blad 'data', maar dan krijg je daar in F1:F9 ook het resultaat.

Wat jij dus doet is het bereik van je activesheet benoemen, en die is leeg.
 
Jouw illusie werkt in blad 'data', maar dan krijg je daar in F1:F9 ook het resultaat.

Wat jij dus doet is het bereik van je activesheet benoemen, en die is leeg.

Dank voor je reactie, maar wel vreemd. Waarom?
Als ik er keihard range("E2:E8") in zet dan werkt het wel'
Maar zo gauw ik een variabele toe pas krijg ik foutmeldingen.

En ik verwijs toch netjes naar het blad "data".

Let wel, ik probeer het te begrijpen opdat ik dan blijkbaar
in de toekomst anders moet gaan denken.

Wat veranderd "with" aan de situatie?

Moet ik soms kol en rij in het blad "data" declareren? ipv in "formulier".
 
Laatst bewerkt:
Het puntje voor range en cells.
 
Het verschil is de wijze van aanspreken van het object data.
 
Het puntje voor range en cells.

Dus mijnbereik = range(data.cells(blahblah), data.cells(blahbla) zou dan ook moeten werken? Toch?


Alleen had ik die even niet bedacht. Tricky, dit herken ik denk ik wel...
 
Met...
Code:
set mijnbereik = [COLOR=#ff0000]data.[/COLOR]range(data.cells(blahblah), data.cells(blahbla))
..wel
 
Laatst bewerkt:
Met...
Code:
set mijnbereik = [COLOR=#ff0000]data.[/COLOR]range(data.cells(blahblah), data.cells(blahbla)
..wel

Kwartje is gevallen, je moet altijd aangeven in wel blad je kijkt (uiteraard)
bij een eenvoudige range is alleen de range benoemen voldoende.
Cells in een range dienen apart benoemd te worden (en in dit geval de range niet)
Het blad wordt dus blijkbaar niet meegenomen naar de Cells bij een range.
En dan komt het voordeel van With, scheelt een hoop tekst, wel wat dots...

Tnx mannen, nu nog ff onthouden :) en op naar de volgende uitdaging.
 
En..... niet te vergeten de 'resize' en '.value'.
 
Doe het eens zonder 'resize', dan zie je het.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan