是否有方法在此access vba sub中使用循环和数组切换命令按钮视图

是否有方法在此access vba sub中使用循环和数组切换命令按钮视图,vba,ms-access,Vba,Ms Access,我正在使用此子控件切换access窗体中命令按钮的视图。但我想使用循环和可选命令按钮数组作为参数,因为按钮的数量最终会增加 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 CommandBut

我正在使用此子控件切换access窗体中命令按钮的视图。但我想使用循环和可选命令按钮数组作为参数,因为按钮的数量最终会增加

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
差不多吧

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

您可以使用控件的.Tag属性。对于要切换可见性的每个控件,请将.Tag属性设置为“toggle”,然后将代码修改为:

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
关于,

您可以使用这样的:

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

您可以循环使用userform控件,并仅对
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