Microsoft Excel

Herbers Excel/VBA-Archiv

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

Klassenmodul: Enter-Event für Textbox

Betrifft: Klassenmodul: Enter-Event für Textbox von: Johannes
Geschrieben am: 24.10.2020 16:58:39

Hallo zusammen,

Frage an die Klassenmodul-Profis :-)

In meiner Klasse clsTextBox würde ich gerne ein Enter-Event für Textboxen in einer Userform definieren. Mein Code sieht bis dato folgendermaßen aus:

Klassemodul
Public WithEvents p_TextBox As MSForms.Control

Private Sub p_TextBox_Enter()

    ' Mein Code

End Sub
Initialize-Event der Userfom:
Public col                  As Collection

Private Sub UserForm_Initialize()
    
    Dim ctrl As MSForms.Control
    Dim instTextBox As clsTextBox
    
    Set col = New Collection
     
    For Each ctrl In UserForm1.Controls
        If TypeName(ctrl) = "TextBox" Then
            Set instTextBox = New clsTextBox
            Set instTextBox.p_TextBox = ctrl
            col.Add instTextBox
        End If
    Next ctrl
    
End Sub
Beim Aufruf der Userform bekomme ich allerdings einen Laufzeitfehler 459: Objekt oder Klasse unterstützt diese Ereignismenge nicht.

Vielleicht hat jemand eine Lösung :-) Vielen Dank im Voraus.

Johannes

Betrifft: AW: Klassenmodul: Enter-Event für Textbox
von: Nepumuk
Geschrieben am: 24.10.2020 17:22:53

Hallo Johannes,

in Klassenmodulen ist es grundsätzlich nicht möglich ein Enter- oder Exit-Events abzufangen, denn in der Klasse ist das verlassene Control bzw. das Control welches neu den Fokus erhält nicht bekannt.

Gruß
Nepumuk

Betrifft: AW: Klassenmodul: Enter-Event für Textbox
von: Johannes
Geschrieben am: 24.10.2020 17:43:31

Hi Nepumuk,

danke für deine schnelle Antwort.

Das ist komisch. Ich hatte das bereits einmal genau in dieser Form mit einem Label gemacht, dort allerdings logischerweise nicht mit dem Enter sondern mit dem Click-Event und das funktionierte tadellos. Und durch die Public Collection in der ich die Steuerelement speichere ist ja gewährleistet, dass diese die ganze Zeit bekannt sind, solange die Userform geöffnet ist. BTW wird mir für die Variable p_TextBox im VBE sogar das Enter-Event in dem Dropdown oben rechts angeboten.

...so ganz glaube ich das noch nicht :-)

Betrifft: AW: Klassenmodul: Enter-Event für Textbox
von: Nepumuk
Geschrieben am: 24.10.2020 17:51:26

Hallo Johannes,

eine TextBox in einem Klassenmodul ist wie eine einzige TextBox auf einem UserForm. Da gibt es auch kein Enter- oder Exit-Event.

Ich hab mal eine DLL geschrieben mit der das geht. Funktioniert aber nur in einem 32Bit Excel und muss auf jedem Rechner registriert werden auf dem sie laufen soll. Interesse?

Gruß
Nepumuk

Betrifft: AW: Klassenmodul: Enter-Event für Textbox
von: Johannes
Geschrieben am: 24.10.2020 18:07:34

Hi,



nochmals danke :-)

Danke für das Angebot, aber ich brauch das jetzt nicht akut. Das war gerade mehr so aus Neugier und Interesse. Aber gerade weil ich mich auch seit geraumer Zeit anderen Sprachen wie z.B. C# widme, fällt mir bei VBA immer mehr auf wie beschränkt man teilweise hier ist. Ist natürlich auch schon bisschen in die Jahre gekommen und wird ja auch nicht mehr weiterentwickelt, aber deshalb war ich umso erstaunter, dass viele Sachen in "größeren" Sprachen wesentlich leichter von der Hand gehen, als in VBA. Hatte eher immer das Gegenteil angenommen...

Betrifft: AW: Klassenmodul: Enter-Event für Textbox
von: onur
Geschrieben am: 24.10.2020 20:02:07

"fällt mir bei VBA immer mehr auf wie beschränkt man teilweise hier ist. Ist natürlich auch schon bisschen in die Jahre gekommen" - VBA ist nun mal die MAGERVERSION von VB, und VB hat diese Funktionalität mit ControlArrays IMMER schon gehabt.

Beiträge aus dem Excel-Forum zum Thema "Klassenmodul: Enter-Event für Textbox"