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(Text As Variant) As Variant
 
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Dim res  As String
   Dim init As Boolean
   Dim ch   As String * 1
   Dim i    As Long
 
   If IsNull(Text) Then
      GrossKlein = Null
   Else
      init = True
      For i = 1 To Len(Text)
         ch = Mid$(Text, 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
      GrossKlein = res
   End If
End Function

Aufruf

z.B. in einer Aktualisierungsabfrage mit folgender SQL:

UPDATE MeineTabelle SET MeinFeld = GrossKlein(MeinMeld)


Wiki hinweis.png

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)   'ergibt: Müller-wipperfürth