Есть ли способ использовать l oop и массив в этом доступе VBA Sub, чтобы переключить вид командной кнопки - PullRequest
0 голосов
/ 31 марта 2020

Я использую этот саб для переключения вида командной кнопки в форме доступа. Но я хочу сделать это, используя al oop и массив необязательных командных кнопок в качестве аргумента, так как количество кнопок со временем увеличится

enter code here 

Public Sub toggleView(x As Boolean, ByVal a As CommandButton, _
 Optional ByVal b As CommandButton, Optional ByVal c As CommandButton, _
   Optional ByVal d As CommandButton)

    a.Visible = x
    b.Visible = x
    c.Visible = x
    d.Visible = x

End Sub

Ответы [ 4 ]

1 голос
/ 31 марта 2020

Вы можете использовать ParamArray следующим образом:

Option Explicit

Private Sub Command1_Click()
   ToggleView False, Command2, Command3, Command4
End Sub

Private Sub ToggleView(x As Boolean, ParamArray buttons() As Variant)
   Dim i As Integer

   For i = LBound(buttons) To UBound(buttons)
      buttons(i).Visible = x
   Next
End Sub
0 голосов
/ 31 марта 2020

Вы могли бы l oop через пользовательские элементы управления и действовать только на CommandButton печатных

Public Sub toggleView(x As Boolean)
    Dim ctl As Control
    For Each ctl In Me.Controls
        If TypeName(ctl) = "CommandButton" Then ctl.Visible = x
    Next
End Sub
0 голосов
/ 31 марта 2020

Что вы можете сделать, это использовать свойство .Tag элемента управления. Для каждого элемента управления, для которого вы хотите переключить видимость, установите для свойства .Tag значение «Переключить», а затем измените код так:

Public Sub toggleView(x As Boolean)
    Dim ctl As Control
    For Each ctl In Me.Controls
        If ctl.Tag = "Toggle" Then
            ctl.Visible = x
        End If
    Next ctl
End Sub

С уважением,

0 голосов
/ 31 марта 2020

Примерно так.

Private Sub UserForm_Click()

Dim a() As CommandButton
ReDim a(2)
Set a(0) = Me.CommandButton1
Set a(1) = Me.CommandButton2
Set a(2) = Me.CommandButton3

ButtonSub a

End Sub

Function ButtonSub(arr() As MSForms.CommandButton)


End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...