【问题标题】:Referencing a subform as variable in a module在模块中引用子表单作为变量
【发布时间】:2015-12-30 19:12:36
【问题描述】:

我一直在使用一个模块来将表单和控件的名称作为变量来更改表单上控件的属性。例如:

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

...但这不起作用(对象不支持此属性或方法)。

【问题讨论】:

    标签: ms-access vba ms-access-2007 ms-access-2010 ms-access-2013


    【解决方案1】:

    My Access 2010 无法识别名为 ForeColour 的控件属性;但 ForeColor 是有效的。 (我不知道这里是否涉及语言环境问题,但我的语言环境是美国英语。)

    除此之外,我认为您正在尝试通过.Form(subFormName) 属性访问ForeColor。取而代之的是,引用子窗体 control,并从那里引用其包含的子窗体中的目标控件。

    在这个工作示例中,Form12 包含一个名为 Child0 的子窗体控件。子窗体控件包含一个名为 fsub2 的窗体,该窗体又包含一个名为 txtMemo_field 的文本框。但请注意子表单的名称(表单名称不是包含它的控件)不会出现在此语句中:

    Forms("Form12").Controls("Child0").Controls("txtMemo_field").ForeColor = vbBlue
    

    【讨论】:

    • “ForeColour/ForeColor”的眼睛很好。 Intellisense 不会在这个级别触发,而且我来自英国,因此会出现这个错误。
    • 我花了一段时间才发现这一点。转折点是? Forms!Form12!Child0!txtMemo_field.ForeColour 给了我你报告的同样的“不支持”错误。那时我终于注意到ForeColourForeColor 我现在提到这一点是因为我认为Forms!FormName!SubformControl!TextBox.Property 可能是您的Forms()Controls() 属性方法的有用交叉检查。这是给我的。 :-)
    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2021-08-13
    • 2020-04-30
    相关资源
    最近更新 更多