VBA Tipp: Ersten Buchstaben im Wort groß schreiben

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte einen String so konvertieren, dass jeweils der erste Buchstabe im Wort groß, der Rest klein geschrieben wird. (Entsprechend der Excel-Funktion GROSS2).

Lösung

Das leistet diese Funktion:

Public Function GrossKlein(S)
Dim Res As String, Init As Boolean, Ch As String * 1, I As Long
 
If IsNull(S) Then
  GrossKlein = S
Else
  Res = "": Init = True
  For I = 1 To Len(S)
    Ch = Mid(S, I, 1)
    Select Case Ch
      Case "A" To "Z", "Ä", "Ö", "Ü", "a" To "z", "ä", "ö", "ü", "ß"
        Ch = IIf(Init, UCase(Ch), LCase(Ch))
        Init = False
      Case Else
        Init = True
    End Select
    Res = Res & Ch
  Next I
  GrossKlein = Res
End If
End Function

Aufruf dann z.B. in einer Aktualisierungsabfrage mit folgender SQL:

UPDATE MeineTabelle SET MeinFeld = GrossKlein(MeinMeld)

Anmerkung

Die eingebaute Funktion StrConv leistet fast das selbe - scheitert allerdings an "Wörtern", die nicht durch Leerzeichen getrennt sind, also z.B. an Bindestrichen in Eigennamen:

Debug.Print StrConv("Müller-Wipperfürth",vbProperCase)
Müller-wipperfürth