访问VBA - 我可以将表单实例分配给子窗体控件吗?

时间:2016-12-09 20:42:52

标签: vba oop object ms-access access-vba

假设我在Access中有MainForm

MainFormSubForm控件。

我还有另一个名为AnotherForm的表单,我想使用它的MainForm属性插入SubForm的{​​{1}}控件。

然后我想在变量中捕获新创建的SourceObject的实例。

我可以这样做:

AnotherForm

酷,'Inside the MainForm's code-behind Me.SubForm.SourceObject = "Form.AnotherForm" Dim af As Form_AnotherForm Set af = Me.SubForm.Form 现在保存af控件在设置SubForm属性时创建的表单实例。

现在,让我们说我想先通过SourceObject实例new然后将其传递给AnotherForm控件来反转该过程。

理论上它看起来像这样:

SubForm

使用其他方法完成任何方法?

我希望能够将不同的表单附加到'Inside the MainForm's code-behind Dim af As Form_AnotherForm Set af = New Form_AnotherForm Me.SubForm.Form = af 'ERROR: Read-only 控件并在运行时将其切换出来。但是,如果我将SubForm附加到AnotherForm,然后将SubForm附加到YetAnotherForm,那么我会再次将SubForm附加到AnotherForm,我想使用与我第一次使用的SubForm相同的实例,以便在它重新出现时不会丢失任何更改。

2 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的。你不能替换子表单的实例,你只能更改SourceObject,这个操作会破坏以前的子表单实例,并“从头开始”创建新的子表单。

我会在你的情况下使用tab控件来保存你想要切换的所有子表单的实例:使用标签样式none创建标签控件,使边框透明,因此子表单的外观将是相同的,如如果使用了一个子表单控件。

要在可见子表单之间切换,只需将所需值分配给选项卡控件

答案 1 :(得分:0)

您尝试使用Set语句吗?

Set Me.SubForm.Form = af