Het Range (bereik) object

Range(cel verwijzing, cel verwijzing) gebruiken om naar een gebied te verwijzen.

De syntax Range(cel verwijzing, cel verwijzing), stelt je in staat om naar een bepaald gebied te verwijzen. Je kunt voor je verwijzing de zogenaamde A1 syntax gebruiken maar ook de syntax Cells(RijNr, KolomNr). Ook kun je bereiknamen, die naar een cel verwijzen, gebruiken. Tenslotte kun je variabelen gebruiken

De volgende voorbeelden (alleen te gebruiken in VBA code) verwijzen naar een gebied d.m.v. de methode Range. Merk op dat de komma NIET binnen de aanhalingstekens staat.

Range("B4", "D9")

Verwijst naar het bereik B4:D9

Range(Cells(4, 2), Cells(9, 4))

Verwijst eveneens naar het bereik B4:D9. Deze manier werkt alleen op het actieve blad. Het volgende voorbeeld is meer flexibel

With Sheets("Blad4") .Range(.Cells(4, 2), .Cells(9, 4))End With

Het woord With zorgt er voor dat je code korter wordt. Je hoeft namelijk Sheets(“Blad4”) niet telkens te herhalen daar waar de punt staat bij .Range en .Cells

Range(ActiveCell, ActiveCell.Offset(4, 5)).Select

Gaat uit van de actieve cel en vervolgens 4 rijen naar beneden en 5 kolommen naar rechts

Range(ActiveCell, Cells(2, 5)).Select

Gaat uit van de actieve cel en vervolgens 2 rijen naar beneden en 5 kolommen naar rechts

Range(Cells(4, 5), "H5").Select

Links boven is cel E4 en rechts onder is cel H5. Dus het gebied E4:H5 wordt geselecteerd

Range("A1", "LaatsteCel").Select

Selecteert het gebied van A1 tot en met de cel met de naam “LaatsteCel”

Range("E2", Cells(X, Y)).Select

Selecteert het gebied van E2 tot en met de cel met de variabelen X en Y waarbij X en Y getallen voorstellen.

Range(MijnCel, Cells(4, 4)).Select

Selecteert het gebied van MijnCel tot en met cel D4. Hierbij is MijnCel een object variabele. Dit is een verwijzing naar een cel die als volgt tot stand komt.

Dim MijnCel As Range Set MijnCel = Range("A1")

Dus in dit voorbeeld wordt het gebied A1:D4 geselecteerd. Let op ! ! ! het blad MOET actief zijn.

Range(MijnCel, JouwCel).Select

Selecteert het gebied van MijnCel tot en met cel JouwCel. Hierbij zijn MijnCel en JouwCel object variabelen.

Dim MijnCel As Range, JouwCel As Range Set MijnCel = Range("A1")Set JouwCel = Range("E10")

Dus in dit voorbeeld wordt het gebied A1:E10 geselecteerd. Let op ! ! ! het blad MOET actief zijn.

Belangrijk: Verwijzingen moeten bijna altijd worden voorzien van een verwijzing naar het juiste blad. Hier weer een voorbeeld:

Sub test()
Dim BladVerw As Worksheet
Set BladVerw = Workbooks("medewerkers.xlsm").Sheets("salarissen")
With BladVerw
.Range(.Cells(1, 1), .Cells(5, 5)).Copy
End With
End Sub

Nog een voorbeeld. Het zal langzamerhand voor zichzelf spreken.

Sub test()
    Dim topCell, bottomcell, a, b, x, y
    a = 1
    b = 1
    x = 5
    y = 5
    Set topCell = Workbooks("medewerkers.xlsm").Sheets("salarissen").Cells(a, b)
    Set bottomcell = Workbooks("medewerkers.xlsm").Sheets("salarissen").Cells(x, y)
    Range(topCell, bottomcell).Copy
End Sub

Je hoeft niet altijd het juiste werkblad te activeren. Eigenlijk verdient dit de voorkeur want activeren en vervolgens selecteren zijn extra stappen en maken de uitvoering van de code langzaam.

Workbooks(“medewerkers.xlsm”).Sheets(“salarissen”).Range(“1:2”).Copy

Deze code kopieert rij 1 en 2 naar het klembord zonder de map en het werkblad te activeren en het bereik te selecteren.

Nog een voorbeeld. Als je deze code uitvoert terwijl een ander blad actief is dan het blad “salarissen”, krijg je een foutmelding

Workbooks("medewerkers.xlsm").Sheets("salarissen").Range(Cells(1, 1), Cells(3, 3)).Value = 4

Dit werkt wel:

With Workbooks("medewerkers.xlsm").Sheets("salarissen")
.Range(.Cells(1, 1), .Cells(3, 3)).Value = 4
End With

De Range methode kan voorzien worden met een celverwijzing middels ActiveCell. Indien voorzien met deze celverwijzing, is de Range verwijzing relatief ten opzichte van de ActiveCell. Als E4 de ActiveCell is, gebeurt bij de uitvoering van onderstaande code het volgende:

ActiveCell.Range("A1:C1").Clear

Het bereik A1:C1 wordt NIET gewist, maar WEL het bereik vanaf de ActiveCell twee cellen naar rechts. Dus bereik E4:G4

Range(ActiveCell.Offset(0, 6), ActiveCell.Offset(0, 10)).Select

Het bereik 6 cellen naar rechts tot en met 10 cellen naar rechts ten opzichte van de ActiveCell wordt geselecteerd. Indien de ActiveCell A1 is, wordt dus het bereik G1:K1 geselecteerd.

Leave a Reply

Your email address will not be published. Required fields are marked *