例如,假設我想要一個添加ComboBox的方法。也許我試試這個如何判斷哪個表單模塊叫做你的類
Public Sub AddComboBox()
Dim cb As MSForms.ComboBox
Set cb = <Calling form module>.Controls.Add("Forms.ComboBox.1")
End Sub
我怎樣才能得到<Calling form module>
?
例如,假設我想要一個添加ComboBox的方法。也許我試試這個如何判斷哪個表單模塊叫做你的類
Public Sub AddComboBox()
Dim cb As MSForms.ComboBox
Set cb = <Calling form module>.Controls.Add("Forms.ComboBox.1")
End Sub
我怎樣才能得到<Calling form module>
?
正如其他人所說的,將表單實例傳遞給類方法。不像其他人,我要補充:
Me
關鍵字。他是一個簡單的例子:
' <Module1.bas>
Option Explicit
Sub Main()
UserForm1.Show vbModeless
UserForm2.Show vbModeless
End Sub
' </Module1.bas>
' <UserForm1.frm>
Option Explicit
Private Sub UserForm_Activate()
Dim c As Class1
Set c = New Class1
c.AddComboBox Me
End Sub
' </UserForm1.frm>
' <UserForm2.frm>
Option Explicit
Private Sub UserForm_Activate()
Dim c As Class1
Set c = New Class1
c.AddComboBox Me
End Sub
' </UserForm2.frm>
' <Class1.cls>
Option Explicit
Public Sub AddComboBox(ByVal MSForms_UserForm As MSForms.UserForm)
Dim cb As MSForms.ComboBox
Set cb = MSForms_UserForm.Controls.Add("Forms.ComboBox.1")
End Sub
' </Class1.cls>
極好的例子。謝謝! – 2009-08-13 14:00:38
我認爲你寫錯了這個方法。而不是試圖確定誰稱這種方法,只要通過<Calling Form Module>
到AddComboBox()
作爲參數。像這樣:
Public Sub CallToAddComboBox()
AddComboBox(<Calling form module>)
End Sub
Public Sub AddComboBox(CallingFormModule as <Module Object Type>)
Dim cb As MSForms.ComboBox
Set cb = CallingFormModule.Controls.Add("Forms.ComboBox.1")
End Sub
我在Access工作,我無法100%驗證代碼。但是LFSR肯定是在正確的軌道上 - 傳遞調用對象作爲函數的參數。 – Smandoli 2009-08-12 18:57:24
感謝您的示例! – 2009-08-13 14:08:01
「你不是可以」 似乎是答案。 – 2009-08-13 14:03:00