Class 如何在VBA中打开由参数传递给类模块的窗体?
我创建了一个类,其中包含一个表单类型为Class 如何在VBA中打开由参数传递给类模块的窗体?,class,oop,vba,Class,Oop,Vba,我创建了一个类,其中包含一个表单类型为private的私有变量,其中包含事件frmFormulary As form,它通过属性集公共属性集Formulary(frmForm As form)接收表单对象,该属性集先前在Access中创建。当我实例化这个类的一个对象时,我将这个表单传递给这个对象,这个表单已经在Access中创建,并且实际上是关闭的,并将这个表单保存在类的私有变量中,目的是在不使用DoCmd.OpenForm“formName”的情况下加载这个表单。为了使之成为可能,我使用指令f
private的私有变量,其中包含事件frmFormulary As form
,它通过属性集公共属性集Formulary(frmForm As form)
接收表单对象,该属性集先前在Access中创建。当我实例化这个类的一个对象时,我将这个表单传递给这个对象,这个表单已经在Access中创建,并且实际上是关闭的,并将这个表单保存在类的私有变量中,目的是在不使用DoCmd.OpenForm“formName”
的情况下加载这个表单。为了使之成为可能,我使用指令frmFormulary.Visible=True
在类Public Sub ShowForm()
中创建了一个子类,但没有成功。当我运行此方法时,应用程序就会停止。如何加载此表单而不必使用DoCmd.OpenForm“formName”
但是表单对象本身通过参数传递?请根据要求查找示例代码
这是类别clsForm代码:
----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private WithEvents frmFormulary As Form
Public Event OpenForm(Cancel As Integer)
Public Event LoadForm()
Public Event UnloadForm(Cancel As Integer)
Public Event CloseForm()
Public Property Set Formulary(frmForm As Form)
Set frmFormulary = frmForm
frmFormulary.OnOpen = "[Event Procedure]"
frmFormulary.OnLoad = "[Event Procedure]"
frmFormulary.OnUnload = "[Event Procedure]"
frmFormulary.OnClose = "[Event Procedure]"
End Property
Public Sub ShowForm()
frmFormulary.Visible = True
End Sub
Private Sub frmFormulary_Open(Cancel As Integer)
RaiseEvent OpenForm(Cancel)
MsgBox "Event Open from clsFormulary class"
End Sub
Private Sub frmFormulary_Load()
RaiseEvent LoadForm
End Sub
Private Sub frmFormulary_Unload(Cancel As Integer)
RaiseEvent UnloadForm(Cancel)
End Sub
Private Sub frmFormulary_Close()
RaiseEvent CloseForm
End Sub
Private Sub Class_Terminate()
Set frmFormulary = Nothing
End Sub
----------------------------------------------------------------------------------------
这是表格代码:
----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private Sub btnTeste_Click()
On Error GoTo TreatError
Dim objScreen As clsFormulary
Set objScreen = New clsFormulary
objScreen.Formulary (Application.CurrentProject.AllForms("frmScreenTest"))
objScreen.ShowForm
ExitError:
'Set objScreen = Nothing
Exit Sub
TreatError:
Resume ExitError
End Sub
----------------------------------------------------------------------------------------
谢谢。当您说应用程序只是停止时,如果在该行上放置断点,程序是否继续不执行任何操作,或者您是否收到某种错误?请发布代码以便我们查看