View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
RB Smissaert RB Smissaert is offline
external usenet poster
 
Posts: 2,452
Default Generic Userform class

As I have a lot of userforms I made a generic userform class to get events
of the different forms.

This is the code that sets this up:


In a Class module called FormClass:
-------------------------------------------------------

Option Explicit
Public WithEvents objForm As MSForms.UserForm

Private Sub objForm_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, _
ByVal X As Single, _
ByVal Y As Single)
Dim i As Long
Dim lContextHelpID As Long
Dim arrHelpIDs

arrHelpIDs = Array(1000, 1001, 1002, 1004)

If Button = 2 Then
'see what form it is
For i = 0 To 3
If Forms(i).objForm Is objForm Then
lContextHelpID = arrHelpIDs(i)
Exit For
End If
Next
If lContextHelpID 0 Then
ShowHelp bWebHelp, lContextHelpID
End If
End If

End Sub


In a normal module:
-------------------------------

Public Forms(22) As New FormClass


In the different userform initialize events:
-------------------------------------------------------

Set Forms(0).objForm = Me


The problem is that I can't get the properties of the userform I want.
Ideally I would want the HelpContextID, but the caption would be OK.
When I do objForm.HelpContextID I get Runtime error Object doesn't support
property or method.
When I do objForm.Caption I get an empty string.

The above method with looping through the forms array does work, but I would
think there should be a better way to do this.


RBS