Доступ к VBA Изменение видимости элемента управления переменной в подчиненной форме
Я пытаюсь создать подпрограмму, которая будет переключать видимость заданного массива элементов управления в заданном месте формы. Мне удалось заставить его работать с основной формой, но я не могу понять синтаксис для элемента управления подчиненной формы. Я работаю с 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 ответ
Решение
Если вы печатаете sFrm
как String
в VBA он никогда не может быть нулевым. Поэтому ваше заявление 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
не поставляется