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

Hoe "Dim r as Range" te gebruiken

Status
Niet open voor verdere reacties.

Joost.van.Steeg

Gebruiker
Lid geworden
9 okt 2006
Berichten
138
Ik heb een tijdje in andere meldingen lopen zoeken, maar kwam het zo snel niet meer tegen, toch wordt het vaak gebruikt, zodat "r" gebruikt kan worden voor veldbewerkingen.

Ik probeerde het volgende zonder succes:

Code:
Dim rBoekingsdatum as Range
Dim iRowDate as integer

iRowDate = 6

rBoekingsDatum = Range("I" & iRowDate)

Dit geeft een foutmelding.
Graag zou ik bovenstaande willen gebruiken zodat ik ipv
Code:
Range("I" & iRowDate).NumberFormat
de volgende code kan gebruiken
Code:
rBoekingsDatum.NumberFormat

Weet iemand wat ik hier fout doe, en heeft iemand misschien wat algemene tip over hoe je een range of cell in een Range of Cell variabele kan plaatsen?

Alvast bedankt.
 
je moet eerst de set instructie gebruiken.

Dus
Code:
set rBoekingsDatum = Range("I" & iRowDate)

Deze code zal wel werken (niet getest) maar ik zou bij het definieren van zulke range toch op zijn minst de sheetnaam ervoor zetten, en evt. zelfs nog de workbookname.

Code:
ser rBoekingsDatum = ThisWorkbook.Sheets("naam van sheet").range("l" & irowdate)

Je kan ook activesheet gebruiken maar een sheet mee definieren vind ik toch "veiliger" werken. Indien mogelijk kan je ook de vbNaam van de sheet gebruiken, zodanig dat gebruikers er (praktisch) geen invloed op hebben.
 
Ah, kijk aan, dank je wel.

Ik heb het idee dat ik te vaak de werboeknaam en sheetnaam gebruik voor de Cell of Range omdat dan misschien de code wat uitgebreider lijkt en dus minder overzichtelijk zou worden. Maar eigelijk is het dus juist beter om de verwijzing vollediger te houden?
 
Ah, kijk aan, dank je wel.

Ik heb het idee dat ik te vaak de werboeknaam en sheetnaam gebruik voor de Cell of Range omdat dan misschien de code wat uitgebreider lijkt en dus minder overzichtelijk zou worden. Maar eigelijk is het dus juist beter om de verwijzing vollediger te houden?

Op die manier voorkom je dat de code enkel invloed heeft op de sheet die jij specifieert en niet op de actieve sheet (dit is wanneer er geen sheetnaam voorstaat).
 
Duidelijk, dankje.

Dan had ik nog de volgende vraag ivm het range object.
Stel ik zet meerdere cellen in mijn range, bijvoorbeeld:

Code:
Set rDatumVeld = Range(Cells(9, 7), Cells(12, 7))

Nu wil ik graag voor elke cel in die range een bewerking uitvoeren. Ik heb dit eens eerder gedaan met:
Code:
With rDatumVeld
      .Replace ",", "."
End With

Dat werkt wel. Maar nu wil ik dat elke cel wordt behandeld in een functie:
Code:
With rDatumVeld
subDatumAanpassen
End With

in subDatumAanpassen komt dan bijvoorbeeld:
rDatumVeld.Value voor. Daar struikelt hij over.
Moet ik dan de oplossing zoeken in "for each r in rDatumVeld"?
 
Heb het als volgt opgelost:

Code:
 Dim rDatumRange As Range
  Set rDatumRange = Range(Cells(9, 6), Cells(10, 6))
For Each rDatumVeld In rDatumRange
subDatumAanpassen
If iRowEind = "" Then '<- kan niet gebeuren, dus gaat alle cellen bij langs
Exit For
End If
Next
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan