Laufzeitfehler 459: Objekt oder Klasse unterstützt diese Ereignismenge nicht

15/04/2010 - 10:11 von Andreas Killer | Report spam
Juhu. :-))

Ich versuche gerade beim Eintritt in eine Textbox auf einer Userform
ein Objekt der Application zu aktivieren, damit es offensichtlich wird
welches Objekt diese Textbox referenziert.

Im Prinzip eigentlich kein Problem, ich speichere im Textbox.Tag den
Namen des Objekts und wàhle es darüber im Enter-Ereignis der Textbox
an.

Der Haken liegt darin das die Textboxen auf der Userform erst zur
Laufzeit erzeugt werden und hier gelingt es mir einfach nicht das
Enter-Ereignis zu übernehmen. MSForms.TextBox hat kein Enter-
Ereignis!?!!

Zum nachvollziehen hier exemplarischer Code, 4 Textboxen auf einer UF
die beim Eintritt in eine Textbox die jeweilige Zelle aktivieren
sollen.

Userform-Code schnipp
Option Explicit

Private MyControls As New Collection

Private Sub UserForm_Initialize()
Dim C As Control
Dim I As Integer
Dim Y As Single
Dim R As Range
Dim K As Klasse1

Y = 3
For I = 1 To 4
Select Case I
Case 1: Set R = Range("A4")
Case 2: Set R = Range("B1")
Case 3: Set R = Range("C3")
Case 4: Set R = Range("D6")
End Select

'Textbox hinzufügen
Set C = Me.Controls.Add("Forms.Textbox.1")
'Positionieren
C.Top = Y
Y = C.Top + C.Height + 3
'Werte zuweisen
C.Value = R.Address
C.Tag = R.Address

'Ereignisse etablieren
Set K = New Klasse1
Set K.MyControl = C '< RTE 459
MyControls.Add K
Next
End Sub
Userform-Code schnapp

Zum Funktionstest kann man in der Klasse1 UseControl auf False setzen
und dann nach Aufruf der Userform einfach eine Textbox àndern.

Klasse1-Code schnipp
Option Explicit

#Const UseControl = True

#If UseControl Then

Public WithEvents MyControl As MSForms.Control

Private Sub MyControl_Enter()
Range(MyControl.Tag).Activate
End Sub

#Else

Public WithEvents MyControl As MSForms.TextBox

Private Sub MyControl_Change()
Range(MyControl.Tag).Activate
End Sub

#End If
Klasse1-Code schnapp

Làßt sich das irgendwie machen oder geht das gar nicht?

Andreas.
 

Lesen sie die antworten

#1 Peter Schleif
15/04/2010 - 10:41 | Warnen spam
Andreas Killer schrieb am 15.Apr.2010 10:11 Uhr:

MSForms.TextBox hat kein Enter-Ereignis!?!!



Aber ein MouseDown-Ereignis. Kannst Du das nicht als Alternative nehmen?
Dann erübrigt sich das mit dem RTE 459.

Peter

Public WithEvents MyControl As MSForms.TextBox

Private Sub MyControl_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Range(MyControl.Tag).Activate
End Sub

Ähnliche fragen