0

我正在尝试创建一个 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 -“对象不支持此属性或方法。”

4

1 回答 1

0

如果您在 VBA 中键入sFrmString则它永远不能为空。因此,您的 If 语句将无法正常工作。修理:

将您的过程声明更改为:

Sub toggleDisappear(ByRef fields() As Variant, _
    ByVal report As String, ByVal vis As Boolean, Optional ByVal sfrm As Variant)

然后,将您的 If 语句更改为:

If IsMissing(sfrm) Then

现在您的代码可以判断何时sFrm未提供。

于 2018-06-06T20:02:53.300 回答