access vba 更改子表单中变量控件的可见性
access vba change visibility of a variable control in a subform
我正在尝试创建一个子组件,它将切换给定表单位置中给定控件数组的可见性。我设法让它在主窗体上工作,但无法弄清楚子窗体控件的语法。我正在使用 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 - "Object doesn't support this property or method."
如果您在 VBA 中键入 sFrm
作为 String
,它永远不会为空。因此,您的 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
。
我正在尝试创建一个子组件,它将切换给定表单位置中给定控件数组的可见性。我设法让它在主窗体上工作,但无法弄清楚子窗体控件的语法。我正在使用 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 - "Object doesn't support this property or method."
如果您在 VBA 中键入 sFrm
作为 String
,它永远不会为空。因此,您的 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
。