我正在尝试创建一个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 -“对象不支持这个属性或方法”。
发布于 2018-06-07 04:02:53
如果在VBA中键入sFrm
作为String
,则它永远不能为null。因此,您的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
。
https://stackoverflow.com/questions/50725525
复制相似问题