Multiple Control Event Classes

M

MartinS

Hi all
I have set up a form with sixty textbox controls on it to allow the user
to enter some data. After starting to write Enter, KeyPress and
AfterUpdate event procedures for each control, I realised that there
must be an easier way, so did a bit of hunting and found the class event
approach. Deleted all my procedures and set it all up again using the
class approach. Now, the problem I'm having is that I have more than
one event for each control, i.e. AfterUpdate, KeyPress and Enter. The
keypress event seems to fire perfectly, but the Enter and AfterUpdate
events don't. I have set up a different class for each data entry type
(I'm entering dates and numbers) and when populating the control arrays
at form initialisation, I determine what to do with each textbox control
by specific text in it's name.
Are there issues with using multiple class events for the same control?
Is there a way to get this to work?

Regards, and thanks in advance

Martin

This is what I have done (if it's of any use):

Private TBDATES() As New TBDateClass
Private TBNUMS() As New TBNumberClass

Private Sub UserForm_Initialize()
Dim TBD_COUNT As Integer, TBN_COUNT As Integer
Dim CTL As Control
TBD_COUNT = 0
TBN_COUNT = 0
For Each CTL In Me.Controls
With CTL
If TypeName(CTL) = "TextBox" And .Parent.Name = "Frame1"
Then
If InStr(.Name, "DATE") > 0 Then
TBD_COUNT = TBD_COUNT + 1
ReDim Preserve TBDATES(1 To TBD_COUNT)
Set TBDATES(TBD_COUNT).TBDGroup = CTL
Else
TBN_COUNT = TBN_COUNT + 1
ReDim Preserve TBNUMS(1 To TBN_COUNT)
Set TBNUMS(TBN_COUNT).TBNGroup = CTL
End If
End If
End With
Next CTL
End Sub

Then I have set up two class modules:

TBDateClass

code:
Public WithEvents TBDGroup As MSForms.TextBox

Private Sub TBDGroup_AfterUpdate()
With TBDGroup
'...my code
End With
End Sub

Private Sub TBDGroup_Enter()
With TBDGroup
'...my code
End With
End Sub

Private Sub TBDGroup_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'...my code
End Sub

TBNumberClass

code:
Public WithEvents TBNGroup As MSForms.TextBox

Private Sub TBNGroup_AfterUpdate()
With TBNGroup
'...my code
End With
End Sub

Private Sub TBNGroup_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'...my code
End Sub


*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
 
J

Jan Karel Pieterse

Hi MartinS,
Now, the problem I'm having is that I have more than
one event for each control, i.e. AfterUpdate, KeyPress and Enter. The
keypress event seems to fire perfectly, but the Enter and AfterUpdate
events don't. I have set up a different class for each data entry type
(I'm entering dates and numbers) and when populating the control arrays
at form initialisation, I determine what to do with each textbox control
by specific text in it's name.

When using a class module to hook up events for multiple controls, not all
events you are used to seeing in the code module behind the form are
available.

The textbox control e.g. has no AfterUpdate event from a class module.
Find out which are present by using the dropdowns at the top of the class
module's window. You'll see a number of them are missing.

Regards,

Jan Karel Pieterse
Excel MVP
www.jkp-ads.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top