RSS

Range-objektet i Excel VBA

I Excel repræsenterer et Range et område, som kan være én eller flere celler i et regneark.

Det er en uhyre nyttig størrelse, når man skal programmere. Et range kan ændres dynamisk, og det er langt mere fleksibelt end at operere med faste celleadresser eller "valgte" områder. Et Range kan bl.a. gennemløbes celle for celle med en For Each..Next løkke, som er meget hurtig.

Her følger et simpelt eksempel. Hvis du vil prøve det af, så kopiér og indsæt følgende kode i et modul. I regnearkets celler A1 til A5 skriver du f.eks.

120
20
Peter
40
500

Proceduren farver celler røde, som har en numerisk værdi over 100, men "farveladekoden" kan nemt erstattes af noget andet.


Sub FarvCelle()
'Gennemløber celler i en kolonne. Celler
'med en værdi over 100 farves røde.
Dim rCell As Range
Dim rOmraade As Range

On Error GoTo ErrorHandle

'Rangevariablen sættes = celle A1
Set rOmraade = Range("A1")

'Hvis der står noget i cellen nedenunder (A2),
'udvides rOmraade nedad til den sidste celle
'med indhold. Dette svarer til CTRL + SHIFT + pil ned.
If Len(rOmraade.Offset(1, 0).Formula) > 0 Then
   Set rOmraade = Range(rOmraade, rOmraade.End(xlDown))
End If

'Nu gennemløbes området celle for celle.
'Hvis indholdet er en numerisk værdi, og hvis
'værdien er over 100, farves cellen rød.
For Each rCell In rOmraade
   With rCell
      If IsNumeric(.Value) And .Value > 100 Then
         .Interior.ColorIndex = 3
      End If
   End With
Next

BeforeExit:
'Rangevariablerne fjernes fra hukommelsen.
Set rCell = Nothing
Set rOmraade = Nothing

Exit Sub
ErrorHandle:
MsgBox Err.Description & ", Procedure FarvCelle", "Fejl"
Resume BeforeExit
End Sub

Relateret