Onderwerp


Hoofdletters of kleine letters



Informatie


Stel dat je van een bereik moet bepalen wat het lettergebruik van de gevulde cellen is. Je kunt dit oplossen door een zeer complexe matrixformule te schrijven, maar ook door zelf een procedure met VBA te ontwikkelen. Aangezien het zonde is om dingen dubbel te doen, kun je onderstaande functie ook gebruiken door deze in een module van het werkboek waarin je hem wilt gebruiken, of in je Persoonlijke Werkboek te kopiƫren.

Function CountCase(rngInput As Range, sCase As String) As Long
Dim vValue
Dim lUpper As Long
Dim lMixed As Long
Dim lLower As Long
Dim rCell As Range
lUpper = 0
lLower = 0
lMixed = 0

For Each rCell In rngInput
If Not IsError(rCell.Value) Then
vValue = rCell.Value
If VarType(vValue) = vbString _
And Trim(vValue) <> "" Then
If vValue = LCase(vValue) Then
lLower = lLower + 1
ElseIf vValue = UCase(vValue) Then
lUpper = lUpper + 1
Else
lMixed = lMixed + 1
End If
End If
End If
Next
Select Case UCase(sCase)
Case "U"
CountCase = lUpper
Case "L"
CountCase = lLower
Case "M"
CountCase = lMixed
Case Else
CountCase = CVErr(xlErrValue)
End Select
End Function




Hoe het werkt.
De functie evalueert alle cellen van een bepaald bereik (rngInput) en bepaald de aard van de tekst.

Eerst wordt bepaald of de inhoud van de cel valide is en uit tekst bestaat.
If Not IsError(rCell.Value) Then
vValue = rCell.Value
If VarType(vValue) = vbString _
And Trim(vValue) <> "" Then


Vervolgens wordt de inhoud van de cel bepaald.
Zijn alle letters kleine letters, dan wordt bij de variabele lLower 1 opgeteld.
If vValue = LCase(vValue) Then lLower = lLower + 1

Bestaat de inhoud van de cel uit hoofdletters, dan wordt de bij variabele lUpper 1 opgeteld.
ElseIf vValue = UCase(vValue) Then lUpper = lUpper + 1

In de andere gevallen wordt bij de variabele lMixed 1 opgeteld.
Else lMixed = lMixed + 1

De functie kun je in een werkblad gebruiken door deze als volgt in te voeren:
=CountCase(A2:A102;"U")