Test af en celles indhold
Når man arbejder med VBA (makroer) i Excel, har man ofte brug for at teste eller kontrollere en celles indhold: Er cellen tom, indeholder den et tal, en tekst, en formel, en fejl, en dato - eller har cellen en kommentar, eller er den betinget formateret?
Og hvordan gør man så lige det?
Herunder følger nogle eksempler. Du kan markere koden her på siden og kopiere den (CTRL + C) og sætte den ind (CTRL + V) i et VBA modul og så køre den. I eksemplet bruges celle A1 i det aktive regneark, men en hvilken som helst celle eller større range kan bruges.
Hvis du ser denne side på en lille skærm, kan nogle af kodelinjerne se "knækkede" ud, men linjeskiftene er okay, når du kopierer koden ind i et VBA-modul.
Sub CelleTjek()
Dim rCell As Range
Dim sMyString As String
On Error GoTo ErrorHandle
Set rCell = Range("A1")
If Len(rCell.Formula) = 0 Then
MsgBox "Celle " & rCell.Address & " er tom."
End If
If IsEmpty(rCell) Then
MsgBox "Celle " & rCell.Address & " er tom."
End If
If IsNumeric(rCell.Value) Then
MsgBox "Celle " & rCell.Address & " er en talværdi."
End If
If IsError(rCell.Value) Then
MsgBox "Celle " & rCell.Address & " indeholder en fejl."
End If
If IsDate(rCell.Value) Then
MsgBox "Celle " & rCell.Address & " indeholder en dato."
End If
If IsNumeric(rCell.Value) = False And _
IsError(rCell.Value) = False Then
sMyString = Trim(rCell.Value)
If Len(sMyString) > 0 Then
MsgBox "Celle " & rCell.Address & " er en tekst med " & _
Len(sMyString) & " karakterer."
Else
MsgBox "Cellens indhold er blanke mellemrum"
End If
End If
If rCell.FormatConditions.Count > 0 Then
MsgBox rCell.Address & " har betinget formatering."
Else
MsgBox "Ikke betinget formatering."
End If
If rCell.HasFormula Then
MsgBox "Celle " & rCell.Address & " indeholder en formel."
Else
MsgBox "Cellen indeholder ikke en formel."
End If
If rCell.Comment Is Nothing Then
With rCell.AddComment
.Visible = False
.Text "Kommentar tilføjet " & Date
End With
Else
MsgBox rCell.Address & " har allerede en kommentar."
End If
BeforeExit:
Set rCell = Nothing
Exit Sub
ErrorHandle:
MsgBox Err.Description & " Fejl i procedure CelleTjek."
Resume BeforeExit
End Sub
Om celler
I koden har ovenfor jeg mange gange skrevet "rCell.Value". Egentlig er det unødvendigt, fordi "Value" er en celles default property, så jeg kunne med samme resultat nøjes med at skrive "rCell".
Det synes jeg imidlertid er lidt sjusket, og det går ud over læseligheden.
Relateret
|