将子表单引用为模块中的变量
Referencing a subform as variable in a module
我一直在使用模块将窗体和控件的名称作为变量来更改窗体上控件的 属性。例如:
Sub mySub(formName As String, controlName As String)
Forms(formName).Controls(controlName).ForeColor = Colour.RedDark
End Sub
我也想在子表单的控件上为 属性 执行此操作,但不太明白将子表单也作为变量引用的语法。
我认为它可能是这样的:
Forms(mainFormName).Form(subFormName).Controls(controlName).ForeColor = Colour.RedDark
...但这不起作用(对象不支持此 属性 或方法)。
My Access 2010 无法识别名为 ForeColour 的控件 属性;但是 ForeColor 是有效的。 (我不知道这里是否涉及语言环境问题,但我的语言环境是美国英语。)
除此之外,我认为您正在尝试通过 .Form(subFormName)
属性 访问 ForeColor。取而代之的是,引用子表单 control,并从那里在其包含的子表单中引用目标控件。
在这个工作示例中,Form12 包含一个名为 Child0 的子表单控件。子窗体控件包含一个名为 fsub2 的窗体,该窗体又包含一个名为 txtMemo_field 的文本框。但是注意子窗体的名称(窗体名称不是包含它的控件)没有出现在这个语句中:
Forms("Form12").Controls("Child0").Controls("txtMemo_field").ForeColor = vbBlue
我一直在使用模块将窗体和控件的名称作为变量来更改窗体上控件的 属性。例如:
Sub mySub(formName As String, controlName As String)
Forms(formName).Controls(controlName).ForeColor = Colour.RedDark
End Sub
我也想在子表单的控件上为 属性 执行此操作,但不太明白将子表单也作为变量引用的语法。
我认为它可能是这样的:
Forms(mainFormName).Form(subFormName).Controls(controlName).ForeColor = Colour.RedDark
...但这不起作用(对象不支持此 属性 或方法)。
My Access 2010 无法识别名为 ForeColour 的控件 属性;但是 ForeColor 是有效的。 (我不知道这里是否涉及语言环境问题,但我的语言环境是美国英语。)
除此之外,我认为您正在尝试通过 .Form(subFormName)
属性 访问 ForeColor。取而代之的是,引用子表单 control,并从那里在其包含的子表单中引用目标控件。
在这个工作示例中,Form12 包含一个名为 Child0 的子表单控件。子窗体控件包含一个名为 fsub2 的窗体,该窗体又包含一个名为 txtMemo_field 的文本框。但是注意子窗体的名称(窗体名称不是包含它的控件)没有出现在这个语句中:
Forms("Form12").Controls("Child0").Controls("txtMemo_field").ForeColor = vbBlue