Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Wieso Fehler ?

Betrifft: Wieso Fehler ? von: walter mb
Geschrieben am: 01.09.2004 15:39:41

Hallo Zusammen,
habe ein kleines Problem.
Ich möchte bei Eingabe eines Buchstabens das die MSG-Box erscheint, und anschließend die MSG-Box bei der Eingabe von Zahlen bzw. Werten größer als 4 !
Fehler:
Leider wird bei Eingabe an der 4.Stelle eines Buchstabens auch die Warnung ausgelöst. Bei der Eingabe der Zahl kann es an der 4.Stelle auch noch ein Buchstabe sein. !!!
Fehler 2:
Wenn ich eine Zahle größer als 4 eingebe keine Reaktion !
Hier mein Makro:

Private Sub TextBox1_Change()                                     
Dim EingabeZahl As String
 If IsNumeric(TextBox1) = False Then
    Beep
    MsgBox "Nur Zahlen erlaubt, kein Text !", vbCritical
    TextBox1 = "0000"
 If Len(TextBox1) > 4 Then
     Beep
        MsgBox "        Achtung " & Chr(13) & Chr(13) & _
        "Verkäufer Nr. ist 4 stellig," & Chr(13) & Chr(13) & _
        "bitte NEU eingeben !!!" & Chr(13), vbCritical
        TextBox1 = "0000"
        TextBox1.SetFocus
    With TextBox1
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
      Else
     TextBox1.SetFocus
With TextBox1
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
End With
    Worksheets("Muster").Range("I2") = CDbl(TextBox1)direkt rein ! 
    TextBox1 = Format(Worksheets("Muster").Range("I2").Value, ("0000"))
    Label1.Caption = Worksheets("Muster").Range("I4")
    End If
   End If
  End Sub

Hoffentlich kann mir jemand helfen oder einen Tip für mein Makro geben.
Gruss Walter MB
  


Betrifft: AW: Wieso Fehler ? von: GerdZ
Geschrieben am: 01.09.2004 17:12:51

Hallo Walter,

Dein Code mit korrigierten Einzügen:
Private Sub TextBox1_Change()
   Dim EingabeZahl As String
   If IsNumeric(TextBox1) = False Then
      Beep
      MsgBox "Nur Zahlen erlaubt, kein Text !", vbCritical
      TextBox1 = "0000"
      If Len(TextBox1) > 4 Then
         Beep
         MsgBox "        Achtung " & Chr(13) & Chr(13) & _
         "Verkäufer Nr. ist 4 stellig," & Chr(13) & Chr(13) & _
         "bitte NEU eingeben !!!" & Chr(13), vbCritical
         TextBox1 = "0000"
         TextBox1.SetFocus
         With TextBox1
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
         End With
      Else
         TextBox1.SetFocus
         With TextBox1
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
         End With
         Worksheets("Muster").Range("I2") = CDbl(TextBox1) 'direkt rein !
         TextBox1 = Format(Worksheets("Muster").Range("I2").Value, ("0000"))
         Label1.Caption = Worksheets("Muster").Range("I4")
      End If
   End If
End Sub
Dabei wird deutlich, daß die Längenprüfung nur stattfindet, wenn die Eingabe nicht numerisch ist.
Wenn die Eingabe numerisch ist, gehts nach dem zweiten "End If" weiter = Programmende.
Für die Prüfung mußt Du Dich schon entscheiden, ob nur Zahlen erlaubt sind oder ob an der 4. Stelle ein Buchstaben vorkommen darf.

Gruß
Gerd


  


Betrifft: Leider noch nicht... von: walter mb
Geschrieben am: 01.09.2004 18:17:15

Hallo Gerd,
habe reinkopiert, kann aber keine Änderung feststellen gegnüber meinem
Makro oder ich bin ...
Frage, was heißt = korrigierten Einzügen ?
Fehler noch:
Bei Eingabe der 4. Ziffer als BUCHSTABE kommt die Fehlermeldung Nur Zahlen...
und ich so viel Zahlen eingeben egal also nach oder bei der 5.Ziffer keine Warnung.
Gruss Walter MB


  


Betrifft: AW: Leider noch nicht... von: Nepumuk
Geschrieben am: 01.09.2004 20:20:51

Hallo Walter,
warum den einfach, wenn es auch kompliziert geht?


Private Sub TextBox1_Change()
    If Len(TextBox1.Text) = 4 Then
        Worksheets("Muster").Range("I2") = CDbl(TextBox1.Text) 'direkt rein !
        Label1.Caption = Worksheets("Muster").Range("I4")
        TextBox1.Locked = True
    End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) Like "[!0-9]" Then KeyAscii = 0
End Sub


Gruß
Nepumuk


  


Betrifft: Kann gar keine Zahlen eingeben ! von: walter mb
Geschrieben am: 01.09.2004 21:15:34

Hallo Nepumuk,
habe dein Vorschlag reinkopiert, leider kann ich gar keine Zahlen oder Text eingeben.
Gruss Walter
P.S Bei meinem "alten Makro" habe ich eine Fehlermeldung Typen unverträglich bei der
Zeile: Worksheets("Prov-Blatt").Range("I2") = CDbl(TextBox1)
Hier noch einmal mein altes Makro:
Private Sub TextBox1_Change()                                     
Dim EingabeZahl As String
 If IsNumeric(TextBox1) = False Then
    Beep
    MsgBox "Nur Zahlen erlaubt, kein Text !", vbCritical
    TextBox1 = "0000"
 If Len(TextBox1) > 4 Then
     Beep
        MsgBox "        Achtung " & Chr(13) & Chr(13) & _
        "Verkäufer Nr. ist 4 stellig," & Chr(13) & Chr(13) & _
        "bitte NEU eingeben !!!" & Chr(13), vbCritical
        TextBox1 = "0000"
        TextBox1.SetFocus
    With TextBox1
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
      Else
     TextBox1.SetFocus
With TextBox1
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
End With
    Worksheets("Muster").Range("I2") = CDbl(TextBox1)direkt rein ! 
    TextBox1 = Format(Worksheets("Muster").Range("I2").Value, ("0000"))
    Label1.Caption = Worksheets("Muster").Range("I4")
    End If
   End If
  End Sub

Gruss Walter MB


  


Betrifft: Zur Ergänzung ! von: walter mb
Geschrieben am: 01.09.2004 21:27:00

Hallo Nepumuk,
habe folgendes Makro NEU reingesetzt:
Private Sub TextBox1_Change()   
Dim EingabeText As String
  If Len(TextBox1) > 4 Then
     Beep
        MsgBox "        Achtung " & Chr(13) & Chr(13) & _
        "Verkäufer Nr. ist 4 stellig," & Chr(13) & Chr(13) & _
        "bitte NEU eingeben !!!" & Chr(13), vbCritical
        TextBox1 = "0000"
        TextBox1.SetFocus
    With TextBox1
        .SetFocus
        .SelStart = 0
        .SelLength = Len(.Text)
    End With
      Else
   Worksheets("Muster").Range("I2") = CDbl(TextBox1)
   TextBox1 = Worksheets("Prov-Blatt").Range("I2").Value
   Label1.Caption = Worksheets("Prov-Blatt").Range("I4")
    End If
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) Like "[!0-9]" Then KeyAscii = 0
End Sub


Habe also meins und DEINS genommen, die Fehlermeldung ist nicht da, weil ich keinen
Buchstaben eingeben kann. Die Abfrage der 4.Ziffer ist aber i.o., leider ist es aber
notwendig das nach der 3 oder auch 4. Stelle mal ein Buchstabe gesetzt wird also:
400w / 33aw etc.
Gruss Walter


  


Betrifft: AW: Zur Ergänzung ! von: Luschi
Geschrieben am: 01.09.2004 23:06:40

Hallo Walter,

mit der folgenden Routine kannst Du an der 4. Stelle auch einen
Buchstaben eingeben.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox1) < 3 Then
       If Chr(KeyAscii) Like "[!0-9]" Then
          KeyAscii = 0
       End If
    End If
End Sub



Gruß von Luschi
aus klein-Paris


  


Betrifft: Danke funktioniert Super von: Walter
Geschrieben am: 02.09.2004 18:58:22

Hallo Lusch,
funktioniert Super, danke.
Gruss Walter

P.S. Wo liegt klein Paris ?


 

Beiträge aus den Excel-Beispielen zum Thema "Wieso Fehler ?"