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 Frame
BildScreenshot zu Frame Frame-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

Function innerhalb eines Frame


Betrifft: Function innerhalb eines Frame von: Berg
Geschrieben am: 06.07.2018 11:53:33

Hallo,

ich prüfe die Textboxen in einer Userform auf dessen Inhalte. Dies mache ich über eine Function, da ich keine Klassen schreiben kann:

Function TextBoxPrüfung(crtl As Control) As Boolean
If crtl = "" Then
Exit Function
ElseIf Not IsNumeric(crtl) Then
crtl.BackColor = RGB(100, 100, 199)
MsgBox ("Eingabe ist nicht vom Type Numeric!")
TextBoxPrüfung = True
ElseIf crtl > 1 Then
crtl.BackColor = RGB(255, 255, 255)
crtl = Format(crtl, "#,##0.00")
Else
crtl.BackColor = RGB(255, 255, 255)
crtl = Format(crtl, "0.00")
End If
End Function
Hier definiere ich die Textboxen die davon betroffen sind:

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Call TextBoxPrüfung(ActiveControl)
 End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Call TextBoxPrüfung(ActiveControl)
 End Sub
Das ganze funktioniert sehr gut. Nur wenn ich um die Textboxen nachträglich einen Rahmen mache in der Userform (Frame1) zwecks der Übersichtlichkeit funktioniert der Code nicht mehr. Was und wie muss ich da ergänzen? Vorab besten Dank. Gruß

  

Betrifft: AW: Function innerhalb eines Frame von: Daniel
Geschrieben am: 06.07.2018 12:20:19

Hi

Frames sind im Prinzip Userforms in der Userform.

Wenn du eine Textbox im Frame aktivierst, ist das ActiveControl der Userform nicht die TextBox, sondern der Frame. Die Textbox ist dann das ActiveControl des Frames.

Du bekommst deswegen auch kein Exit-Event, wenn du von der Textbox im Frame auf ein Steuerelement außerhalb des Frames klickst, denn innerhalb des Frames behält die Textbox den Focus, nur der Frame verliert ihn.

Das ActiveControl eines Frames müsste dann auch über Me.ActiveControl.ActiveControl angesprochen werden.


Wenn du das Frame nur aus optischen Gründen verwendet, dann ersetzte es durch ein Label mit Rahmen ohne Hindergrund

Gruß Daniel