8.5 Range-objecten

Range-objecten zijn wellicht de meest gebruikte. Daarom nog enkele wetenswaardigheden.

8.5.1. De eigenschap 'Range'

Een Range-object is meestal het resultaat van de eigenschap Range. Deze nu kan op 2 manieren gebruikt worden:

  1. zonder objectaanduiding of met het object Application of met een werkbladobject: de adressen zijn dan alle relatief aan het begin van het aangeduide of actieve werkblad. Voorbeelden zijn: Range("B2:D3"), Application.Range("B2:D3"), Worksheets(1).Range("B2:D3").
  2. bij een (ander) bereikobject: de adressen zijn dan relatief aan het begin van dat bereikobject. ActiveCell.Range("B2") verwijst naar C5 indien de actieve cel B3 is; Range("D5:F10").Range("B2:C3") levert het bereik E6:F7 als resultaat op.

8.5.2. De eigenschappen Cells, Rows en Columns

De eigenschappen Cells, Rows en Columns leveren zelf een bereikobject als resultaat. Ze kunnen gebruikt worden bij het 'Application'-object, een 'Range'-object of een 'Worksheet'-object. Je kan de waarde van deze eigenschappen lezen en niet instellen. Ze behandelen een bereikobject als een verzameling. Ook deze eigenschappen kan je op de 2 bovengenoemde manieren gebruiken.

Application.Rows

Range("A10:C10").Columns

Worksheets("1999").Cells

 

alle rijen van het actieve werkblad(65 535)

alle kolommen van het celbereik(3)

alle cellen van het werkblad "1999"(16 777 216)

Voorbeelden uit te voeren ter controle in het 'venster Direct':

Range("D5:F10").Range("B2:C3").Select
levert E6;F7 als resultaat op
?Selection.Columns.Count
2
?Cells(1,4).Address
$D$1
?Cells(4).Address
$D$1
?Selection.Cells(1,4).Address
$H$6
?Selection.Cells(4).Address
$F$7
?Columns.Count
256
?Range("D5").Cells(1,4).Address
$G$5
?Range("D5").Cells(0,1).Address
$D$4
?Selection.Columns.Count
2

Selection.Rows(1).Select
?Selection.Address
$E$6:$F$6
?Range("B2:E10").Cells(-1,1).Address
$D$3
?Range("B2:E10").Cells(1,1).Address
$B$2
?Range("B2:C10").Rows.Count
9
Range("B2:C10").Rows(4).formula = 5

B5 en C5 krijgen de waarde 5
?Range("B5:F10").Cells.Count
30
Range("B5:F10").Select
?Selection.Cells(Selection.Cells.Count).Address
$F$10

8.5.3. Benoemde bereiken

Dim x As Range
Set x = Range("a1:a10")
x.Name = "ads"
[ads].Value = 20
Nadat je een objectvariabele van het type Range hebt gedefinieerd geef je de eigenschap Name de waarde die je voor het bereik wil. Nadien kan je bij het gebruiken van eigenschappen de bereikomschrijving vervangen door de naam tussen vierkante haakjes.

8.5.3. Samengestelde bereiken

Dim x, y, z As Range
Set x = Range("a1:a10")
Set y = Range("c1:c10")
x.Name = "zone1"
Set z = Application.Union(Range("zone1"), y)
z.Formula = Int(Rnd * 51) + 50
Met de methode Union van het object Application kan je bereiken samenvoegen. Wil je een benoemd bereik in de reeks opnemen dan verwijs je ernaar met de eigenschap Range en de naam tussen haakjes.