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

2 Fragen zu UserFormen | Herbers Excel-Forum


Betrifft: 2 Fragen zu UserFormen von: Tim
Geschrieben am: 30.07.2012 14:52:40

Hallo,

ich habe zwei Fragen zu UserFormen und hoffe, Ihr könnt mir weiterhelfen:

1) Gibt es eine Möglichkeit, das Format einer Textbox vorzugeben, ähnlich wie bei einzelnen Zellen ?
Ich würde gerne für eine TextBox festlegen, dass nur Datumswerte eingegeben werden können.

2) Wie kann ich einem Label (z.B. Label443) sagen, dass sich die Schrift von Schwarz nach Rot ändern soll, wenn der Zellinhalt in Blatt2, I112 = "XXX" ?
Ich habe es mit dem Change-Ereignis probiert, das klappt hier aber nicht.

VG und vielen Dank im Voraus für jeden Tipp,
Tim

  

Betrifft: AW: Userform - Datumseingabe - Label formatieren von: fcs
Geschrieben am: 30.07.2012 16:26:20

Hallo Tim,

Frage 1:
Ein direktes Format gibt es nicht, man kann aber steuern, welche Zeichen eingegeben werden können und beim Verlassen der Textbox prüfen, ob die Eingabe ein gültiges Datum ist.
Dabei kann ähnlich wie bei Zellen eine verkürzte Eingabe verwendet werden( 3.8 wird zu 3.8.2012).
Dazu müssen im Userform-Code entsprechende Ereignismakros für die Text-Box angelegt werden.

Bei vielen gleichartigen Textboxen sollte man entsprechende Klassen-Module für gleichartige Textboxen anlegen. Dazu sollte dann bei den Namen der Textboxen eine Systematik mit eindeutigem Namen + fortlaufender Nr. verwendet werden.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  'Textbox-Wert auf gültiges Datum prüfen
  With Me.TextBox1
    If IsDate(.Value) Then
      .Value = Format(CDate(.Value), "DD.MM.YYYY")
    Else
      Cancel = True
      MsgBox "Eingabe in dieser Textbox muss ein gültiges Datum sein!"
    End If
  End With
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  'Nur Punkt und Ziffern als Eingabe für Datum zulassen
  Select Case KeyAscii
    Case Asc(0) To Asc(9), Asc(".")
      'zulässige Zeichen für Datumseingabe
    Case Else
      KeyAscii = 0
  End Select
End Sub
Frage 2:
Hierzu im Userform eine entsprechende Prozedur anlegen, die die Werte prüft und die Labelschriftfarbe anpasst. Diese Prozedur startest du zum Beispiel in der Initialisierungs-Prozedur des Userforms.
Private Sub UserForm_Initialize()
  Call ChangeLabelColors
End Sub

Private Sub ChangeLabelColors()
  Dim wks As Worksheet
  Set wks = Worksheets("Blatt2")
  With Me.Label441
    If wks.Range("B11").Value = "XXX" Then .ForeColor = &HFF& Else .ForeColor = &H80000012
  End With
  With Me.Label202
    If wks.Range("B12").Value = "YYY" Then .ForeColor = &HFF& Else .ForeColor = &H80000012
  End With
End Sub

Gruß
Franz


  

Betrifft: AW: Userform - Datumseingabe - Label formatieren von: Tim
Geschrieben am: 30.07.2012 16:36:29

Hallo Franz,

vielen Dank für die schnelle Hilfe und die guten Erklärungen - klappt bestens ! :-)

Die Lösung zu Frage 2 ist klasse - da wäre ich so nie drauf gekommen. ;-)

VG und einen schönen Nachmittag noch,
Tim


Beiträge aus den Excel-Beispielen zum Thema "2 Fragen zu UserFormen"