# Textbox Worter Zahlen und Fehler Melden Msg



## valeripf (2. Dezember 2013)

Gibts es möglichkeit in UserForm bei TexBox1

1 Wenn  Textbox1 Keine wert Kein Fehler durch Msg
2 Wenn  Wert eingegeben Dann   Muß 2 oder 3 Wörter sein durch die Leerzechne Oder Stich getänt
(Wie Vor-und Nachname )

Wenn nicht der Fall dann Msg ("Wert muß 2 Oder 3 Wörter erhalten")

das ganze ist in einem TextBox


----------



## tombe (2. Dezember 2013)

Es gibt die Funktion SPLIT mit der du Text nach einem bestimmten Zeichen in Einzelteile zerlegen kannst.


```
Sub test()

worte = "111 222 333 444 555 "

einzeln = Split(worte, " ")

For arrayfeld = 0 To UBound(einzeln)
    Debug.Print einzeln(arrayfeld)
Next arrayfeld

End Sub
```

In diesem Beispiel wird der Inhalt der Variable "worte" auf Leerzeichen geprüft und die so gefundenen Werte an die Variable (das Array) "einzeln" übergeben.

In der Schleife werden dann die einzelnen Werte im Direktfenster (musst du eventuell bei dir einblenden) ausgegeben.

Schau mal ob dir das hilft.


----------



## valeripf (2. Dezember 2013)

bei mir zeigt in Direckt fester


```
111
222
333
444
555

111
222

u.s.w.
```
nur ich weis nicht was es ist ich habe Direckt Fenster ni benutzt


----------



## tombe (2. Dezember 2013)

Schau dir doch mal den Code von mir an, dann solltest du verstehen was die Ausgabe bedeutet.

Der Inhalt der Variable "worte" steht für dein Textfeld. Es hat im Beispiel den Text "111 222 333 444 555" die Zahlenfolgen sind immer durch ein Leerzeichen getrennt.

Die Funktion SPLIT untersucht die Zeichenfolge eben nach diesem Zeichen und teilt den Text in die einzelnen Werte auf.

Als Ergebnis kommt deshalb heraus: "111", "222", "333", "444" und "555"

Ändere im Beispiel einfach mal den Inhalt der Variablen "worte" zum Bespiel in "Peter Müller" oder "Susanne Schmidt" oder auch "Frank-Martin Huber".

Wenn du den Code dann ausführst, wirst du sehen das jeweils der Vor- und der Nachname getrennt ausgegeben werden.

Noch was zum Direkt-Fenster: Die Anweisung "Debug.Print" erzeugt die Ausgabe im Direkt-Fenster. Es ist einfach nur zum Testen da damit du siehst was dein Code macht!


----------



## valeripf (3. Dezember 2013)

hi

Gibst es keine möglichkeit

so was aber ur für zwei Wörter


```
Private Sub CommandButton4_Click()
'Page1
If TextBox1.Value = "" Then
MsgBox ("Bitte Original Name Eingeben")
'Fehlerüberprüfen auf leere Feld TextBox1
'Page 1 Überprüfen
Text.Box1.SetFocus
Exit Sub
End If
```


----------



## tombe (3. Dezember 2013)

Hast du dir das Beispiel von mir überhaupt mal richtig angeschaut? In meinem letzten Beitrag habe ich doch geschrieben das du auf einfach zwei Namen (Vor-/Nachname) angeben kannst.

Neues Beispiel:


```
Private Sub CommandButton1_Click()

worte = Split(txtEingabe.Value, " ")

If Len(txtEingabe.Value) = 0 Or UBound(worte) <> 1 Then
    MsgBox "Die Eingabe ist ungültig!", vbOKOnly, "Fehler"
    Exit Sub
End If

txtVorname.Value = worte(0)
txtNachname.Value = worte(1)

End Sub
```

In der Userform gibt es die Textfelder "txtEingabe", "txtVorname" und "txtNachname" sowie den Button "CommandButton1"

Wenn du die Form so erstellt hast, gibst du in das Textfeld "txtEingabe" z.B. "Peter Müller" oder "Frank-Martin Schmidt" ein und klickst auf den Button.

Als Ergebnis wird dir dann der Vorname und der Nachname im entsprechenden Feld angezeigt.

Gibst du nur einen Namen oder auch gar nichts ein, wird die Fehlermeldung angezeigt!


----------



## valeripf (4. Dezember 2013)

OK Fuktionirt******

noch eine frage hab ich 

Gibts möglichkeit wenn Feld Leer ist kein fehler meldet


----------



## tombe (4. Dezember 2013)

Natürlich geht das auch.

Du solltest dir aber vielleicht mal anschauen was man dir hier so zur Verfügung stellt und versuchen zu verstehen was da passiert.

Ich gehe davon aus das du lernen möchtest wie man solche Dinge löst und nur vom kopieren lernst du nicht wirklich viel.

Versuche deshalb zuerst mal selber die Lösung zu finden. Wenn es nicht klappt, helfe ich dir gerne wieder.


----------



## valeripf (4. Dezember 2013)

ich gib auf ich kriege nicht hin


----------



## tombe (4. Dezember 2013)

So sieht es jetzt aus:


```
If Len(txtEingabe.Value) = 0 Or UBound(worte) <> 1 Then
```

wenn das Textfeld leer sein darf, dann musst du die obige Zeile einfach so ändern:


```
If UBound(worte) <> 1 Then
```

Somit wird nur geprüft ob das Array "worte" zwei Werte enthält.
Arrays beginnen normalerweise immer bei 0. Bedeutet also wenn es zwei Werte gibt, muss UBound als höchsten/größten Index die Zahl 1 liefern. Das mag für dich jetzt ziemlich verwirrend klingen, du musst dich einfach mal ein bisschen mit dem Thema Array beschäfftigen dann sollte es klarer werden.


----------



## valeripf (4. Dezember 2013)

nein funkioniert nicht  der Last mich bei Leere Textbox nicht Weiter
ich habe so trin


```
worte = Split(D1TextBox.Value, " ")
 
If UBound(worte) <> 1 Then
    MsgBox "Bitte Vor-Nachname Eingeben!", vbOKOnly, "Fehler"
    Exit Sub
End If
```

und ich habe noch problemme mit MultiPage Fehler 2110 Mit Focus


----------



## tombe (4. Dezember 2013)

Sorry mein Fehler. Du musst doch prüfen ob das Textfeld leer ist.

In diesem Fall muss du Routine sofort wieder verlassen werden ohne das der sonstige Code noch weiter ausgeführt wird.


```
'wenn nichts in das Textfeld eingegeben wurde, Routine gleich wieder verlassen
If Len(D1TextBox.Value) = 0 Then Exit Sub

'ansonsten prüfen ob es zwei Werte sind
worte = Split(D1TextBox.Value, " ")
 
If UBound(worte) <> 1 Then
    MsgBox "Bitte Vor- und Nachname eingeben!", vbOKOnly, "Fehler"
    Exit Sub
End If
```



> und ich habe noch problemme mit MultiPage Fehler 2110 Mit Focus


Was das bedeuten soll, verstehe ich leider nicht!


----------



## valeripf (4. Dezember 2013)

nein fehlt noch was 

jetzt Kommt keine Msgbox
aber Bei Übernehmen Passiert nix 

kein sein das bei Multipage liegt es ist auf die Zweite seite eingebaut


----------



## tombe (4. Dezember 2013)

Das einzige was ich verstehe, ist das es bei dir so nicht geht.

Zeig uns mal deinen Code und versuche auch mal ihn richtig zu formatieren mit [code=vb] ... [/code]


----------



## valeripf (4. Dezember 2013)

ich sende dir am Beste Kopie von ecxeltabelle

Anhang anzeigen kopie.rar


----------



## tombe (5. Dezember 2013)

Also ich habe mir die Datei bzw. den Code von dor mal angeschaut.

Bevor man sich auf die Fehlersuche macht bzw. machen kann, solltes du erstmal deinen Code selber überarbeiten.

Du hast zum Beispiel folgende Zeilen in Code

```
OrgTextBox.SetFocus
AltTextBox.SetFocus
txtEingabe.SetFocus
```
was absolut unsinnig ist.

Schaue dir wie gesagt selber nochmall an was die einzelnen Abschnitte für eine Funktion haben und ob sie a) wirklich benötigt werden, ob sie b) an dieser Stelle auch richtig sind und c) ob diese Funktion nicht an anderer Stelle wieder durch eine andere Funktion aufgehoben wird.

Du hast zum Beispiel auch 2 Listenfelder. Das eine ist die Jahreszahl und das andere die Spieldauer. Bei der Jahreszahl erzeugst du eine Liste von 1900 bis 2014 (114 Einträge) und bei der Spieldauer geht die Liste von 5 bis 360 Minuten (355 Einträge).

Sorry, aber das ist meiner Meinung nach totaler Quatsch. Mache aus den Listen einfach ein Textfeld und lasse den Benutzer die Jahreszahl und die Länge von Hand eintragen.


----------



## valeripf (5. Dezember 2013)

wie gesagt ich bin Kein Programmiere ich habe ganz andere Beruf Richtung gewält 
das mach ich nur Kollege gebettet hat ob ich was machen kann

Ok 
SetFocus Ist weg
auch bei


```
If OrgTextBox.Value = "" Then
MsgBox ("Bitte Original Name Eigeben")
Exit Sub
End If
```

Wie Krieg ich Jahr 1900-2014

und nicht z.B    1552  oder 9524


----------



## tombe (5. Dezember 2013)

Du kennst doch die IF-Anweisung!


```
'die Anweisung Format(Date, "yyyy") liefert die aktuelle Jahreszahl,
'somit muss hier nie mehr was geändert werden!
If jahr < 1900 Or jahr > Format(Date, "yyyy") Then
    MsgBox "Die Jahreszahl ist ungültig!"
End If
```

Ist nur ein Vorschlag von mir, aber ich denke es macht Sinn.


----------



## valeripf (6. Dezember 2013)

Ok Ich Habe Tabelle bishen Verarbeitet

Anhang anzeigen DatenBank.rar


mit Darsteller Funktionierst immer noch nicht 

gibst andere Möglichkeit


----------



## Yaslaw (6. Dezember 2013)

Nett, die Kopie. Do wo darin finden wir dein Problem?
Und wie kann an es reproduzieren?


----------

