方案:我尝试使用此代码根据Rubberduck的建议创建备用OpenArgs属性,但我无法使其工作。我想我在这里遗漏了一些东西,但不知道是什么。
守则:
Public varAltOpenArgs As Variant
Dim FormX as form
Public Property Let AltOpenArgs(value As Variant)
varAltOpenArgs = value
End Property
Public Property Get AltOpenArgs() As Variant
AltOpenArgs = varAltOpenArgs
End Property
使用以下命令从此表单(form1
)打开表单的新实例:
Set frmX = New
frmX.AltOpenArgs = "abcde"
frmX.SetFocus
问题:在AltOpenArgs
中调用时,属性Form_Open
包含空字符串("")。
有人能指出我正确的方向吗?我正在使用Access 2010(32)。
答案 0 :(得分:1)
问题是,在您设置AltOpenArgs值的下一行代码运行之前,所有事件都会在您创建新实例(Set frmX = New Form_MyExampleForm
)后立即触发。
这将永远不会起作用,因为Access表单是由应用程序实例化的,并且您实际上无法控制事件。如果你绝对不能使用内置的OpenArgs
,那么你可以做一些这样的事情,你从Property中运行一个例程让:
Public Property Let AltOpenArgs(value As Variant)
varAltOpenArgs = value
FancyRoutine
End Property
Private Sub FancyRoutine()
'Do whatever fancy stuff you want to do
MsgBox AltOpenArgs
End Sub
我根据您正在尝试的内容(虽然不使用Form_Open
事件)执行某些操作。它可能看起来像这样:
Dim frm As Form_MyExampleForm
Me.SubformControl.SourceObject = "MyExampleForm"
Set frm = MainSubform.Form
frm.AltOpenArgs = "whatever you want"