April 18, 2021, 02:09:39

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Laufzeitfehler 94 beim leeren vom Textfeld

Begonnen von Chris85, März 26, 2021, 15:06:45

⏪ vorheriges - nächstes ⏩

Chris85

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

MzKlMu

März 26, 2021, 15:48:46 #1 Letzte Bearbeitung: März 26, 2021, 17:06:31 von MzKlMu
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.
Gruß
Klaus

Maxel

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.
Gruß
Maxel

MzKlMu

Gruß
Klaus

Chris85

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

MzKlMu

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 ?
Gruß
Klaus

Beaker s.a.

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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

ebs17

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.)
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.