Доступ к 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 не поставляется

Другие вопросы по тегам