【发布时间】:2018-06-06 16:42:54
【问题描述】:
我正在尝试创建一个 sub 来切换给定表单位置中给定控件数组的可见性。我已经设法使它在主窗体上工作,但无法弄清楚子窗体控件的语法。我正在使用 Access 2016。
这是我目前所拥有的:
Sub toggleDisappear(ByRef fields() As Variant, _
ByVal report As String, ByVal vis As Boolean, Optional ByVal sfrm As String)
If IsNull(sfrm) Then
For i = 1 To UBound(fields)
Forms(report).Controls(fields(i)).Visible = vis
Next
Else
For i = 1 To UBound(fields)
Forms.Form(report).Controls(sfrm).Form.Controls(fields(i)).Visible = vis
Next
End If
End Sub
任何想法我错过了什么?我收到运行时错误 438 -“对象不支持此属性或方法。”
【问题讨论】:
-
哪一行触发了这个错误?字符串变量不能保持 Null,只有 Variant 类型可以。因此,要么将变量声明为 Variant,要么测试空字符串:
If sfrm = "" Then。 -
我以为是这样,但事实并非如此。以“Forms.Form(Report)...”开头的行会触发错误。我将 sfrm 变量设置为变量。
标签: ms-access vba controls visibility subforms