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 Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Frage an die Profis | Herbers Excel-Forum


Betrifft: Frage an die Profis von: Dirk
Geschrieben am: 19.11.2009 20:12:31

Schönen Guten Abend,

ich habe eine Abfrage mit einer Textbox versehen, welche eine Meldung ausgibt, sobald kein Komma oder Zahl eingegeben wird:

Function My_IsNumeric(Txt As String) As Boolean

If (Txt <> "") And (Not IsNumeric(Txt) Or InStr(Txt, ".") <> 0) Then
My_IsNumeric = False
Else
My_IsNumeric = True
End If
End Function
Private Sub TextBox2_Change()
Dim Txt As String
    Txt = TextBox2.Text
    If My_IsNumeric(Txt) Then
        Exit Sub
    Else
        Beep
        MsgBox "Bitte eine gültige Zahl eingeben (Komma, kein Punkt)!", vbCritical
        TextBox2.Text = ""
    End If
End Sub
Jetzt würde ich diese aber gerne mit Einheit angeben wie folgt:
Private Sub TextBox3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim k As Integer
k = TextBox2.Text
k = Replace(k, " [N/kg]", "")
k = s & " [N/kg]"
TextBox2 = k

End Sub
Jetzt weiss ich nicht genau, wie ich die Ausnahme [N/kg] in die Abfrage oben hineinwurschteln muss?

Schöne Grüße,
Dirk

  

Betrifft: AW: Frage an die Profis von: Dirk
Geschrieben am: 19.11.2009 20:13:24

Die PrivateFunction KeyUp ist natürlich TextBox2!


  

Betrifft: AW: Frage an die Profis von: Josef Ehrensberger
Geschrieben am: 19.11.2009 21:42:27

Hallo Dirk,

ich mach das so, keine Meldung, sondern nur Zahlen und Komma zulassen und der Zusatz wird beim Verlassen der TB angehängt.

Private Sub TextBox3_Enter()
  TextBox3 = Replace(TextBox3, " [N/kg]", "")
End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  TextBox3 = Replace(TextBox3, " [N/kg]", "") & " [N/kg]"
End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Select Case KeyAscii
    Case 44, 46 'Komma und Punkt(wird auch zu Komma)
      If InStr(1, TextBox3, Chr(44)) = 0 Then
        KeyAscii = 44
      Else
        KeyAscii = 0
      End If
    Case 48 To 57 'Zahlen
    Case Else
      KeyAscii = 0
  End Select
End Sub




Gruß Sepp



  

Betrifft: AW: Frage an die Profis von: Dirk
Geschrieben am: 21.11.2009 11:43:37

Hallo Sepp,

vielen lieben Dank!

Grüße, Dirk


  

Betrifft: Wer sucht im Archiv nach "Profis"? von: Jörg-HH
Geschrieben am: 20.11.2009 00:47:44

Hallo Dirk,
das Archiv ist 'ne tolle Sache und kann eine Menge Fragen im Forum ersparen. Geht aber nur, wenn die Betreffs entsprechend benannt werden...

Einfach "Userform" o.ä. im Betreff ist aber auch schon ungeeignet. Davon gibt es zig Beiträge - wer will die alle einzeln öffnen, um zu gucken, ob vielleicht die eigene Frage damit beantwortet wird...? Ein Betreff "dreieckige Userform erstellen" wäre da schon sinnvoller.

Wenn dein Betreff zB. Begriffe wie Textbox, Einheit oder so enthielte, könnte deine Frage ein Treffer bei einer Suche sein, und spätere Generationen von Fragern hätten auch was von Sepps Antwort. So aber wird deine Frage im Nirwana des Archivs verschwinden und die Antwort wird niemandem mehr nützen.

Schönen Abend - Jörg