Доступ к VBA Изменение видимости элемента управления переменной в подчиненной форме - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать подпрограмму, которая будет переключать видимость заданного массива элементов управления в заданном месте формы.Мне удалось заставить его работать с основной формой, но я не могу понять синтаксис для элемента управления подчиненной формы.Я работаю с 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 голосов
/ 06 июня 2018

Если вы введете 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не поставляется.

...