访问vba更改子窗体中变量控件的可见性

时间:2018-06-06 16:42:54

标签: ms-access access-vba controls visibility subforms

我试图创建一个子,它将切换给定表单位置中给定控件数组的可见性。我设法让它在主窗体上工作,但无法弄清楚子窗体控件的语法。我正在使用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 - "对象不支持此属性或方法。"

1 个答案:

答案 0 :(得分: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