Hallo Zusammen,
ich habe folgendes Problem wo ich nicht weiter komme. In einem Textfeld im Formular haben wir per VBA-Code dies so eingestellt, dass immer der erste Buchstabe Groß-und der Rest Kleingeschrieben wird. Allerdings wenn ich den Text aus der Zeile lösche und in die nächste Zeile gehen bzw. Springen möchte zeigt er mir den "Laufzeitfehler 94 Unzulässige Verwendung von Null" an.
Wir arbeiten mit Access2013
der Code ist wie folgt
Private Sub Front_AfterUpdate()
Dim I As Long, Ch As String, Gr As Boolean
Ch = ""
Ch = UCase$(Left$(Me![Front], 1))
Gr = False
For I = 2 To Len(Me![Front])
If Gr Then
Ch = Ch & UCase(Mid(Me![Front], I, 1))
Gr = False
Else
Ch = Ch & LCase(Mid(Me![Front], I, 1))
End If
If Mid(Me![Front], I, 1) = " " Or Mid(Me![Front], I, 1) = "-" Then
Gr = True
End If
Next I
Me![Front] = Ch
End Sub]
Ich hoffe ich habe es einigermaßen verständlich geschrieben und mir kann jemand weiterhelfen.
Viele Grüße
Hallo,
ergänze mal wie folgt:
Private Sub Front_AfterUpdate()
If Isnull(Me.Front) Then Exit Sub
Me.Front = UCase(Left(Me.Front, 1)) & LCase(Mid(Me.Front, 2))
Exit Sub
Und der Einzeiler reicht.
Was hat es mit dem " " und dem - auf sich, dass muss ggf. noch eingearbeitet werden.
Wozu die aufwändigen Schleife? Für die verschiedenen Schreibweisen gibt es die Funktion StrConv() mit verschiedenen Parametern:
StrConv("Dein Text", vbUpperCase) wandelt die Zeichenfolge in Großbuchstaben um.
StrConv("Dein Text", vbLowerCase) wandelt die Zeichenfolge in Kleinbuchstaben um.
StrConv("Dein Text", vbProperCase) wandelt den Anfangsbuchstaben in jedem Wort der Zeichenfolge in einen Großbuchstaben um.
Für die Parameter können auch die Ziffern 1 bis 3 verwendet werden.
@Maxelich bin in #1 auch schleifenlos. ;D
Hallo,
funktioniert super :D Vielen Dank
warum der aufwendige Code... kann ich euch nicht sagen, da die Datenbank hat jemand anders geschrieben hat und ich diese wieder ins Leben rufen soll...
Wie kann ich es den noch ergänzen, sodass das 2te wort auch großgeschrieben wird.
Gruss
Christian
Hallo,
es wäre überaus vorteilhaft, wenn Du alles sagst was da zu berücksichtigen ist. von 2 Worten war ja noch nicht die rede.
Und warum muss das Feld überhaupt gelöscht werden ?
Hallo Christian,
Zitatsodass das 2te wort auch großgeschrieben wird.
(Luftcode)
Private Sub Front_AfterUpdate()
If Isnull(.Front) Then Exit Sub
Dim aSplit As String
Dim z As Integer
With Me
aSplit = Split(.Front, " ")
For z = 0 To 1 '= 1. & 2. Wort; To UBound(aSplit) = jedes Wort bekommt einen Grossbuchstaben
aSplit(z) = StrConv(aSplit(z), vbProperCase)
Next z
.Front = Join(aSplit(), " ")
End With
Exit Sub
gruss ekkehard
ZitatWie kann ich es den noch ergänzen, sodass das 2te wort auch großgeschrieben wird.
Das fünfte Wort dann wohl nicht mehr?
Und: Wodurch wären Worte voneinander abgetrennt? ekkehard unterstellt mit hoher Wahrscheinlichkeit ein Leerzeichen, aber ...
(Erst Sinnieren, dann Aktionieren.)
Hallo,
ZitatWahrscheinlichkeit
= 1; - einen Beispielstring hat man ja nicht gesehen.
Weshalb ich dies wohl überlesen habe
ZitatIf Mid(Me![Front], I, 1) = " " Or Mid(Me![Front], I, 1) = "-" Then
Da würde ich das in eine Funktion auslagern, der ich das Trennzeichen übergebe.
gruss ekkehard