Joe*_*eau 13
您可以将所有控件放在组框控件中,然后更改组框本身的可见性.
您还可以在要分组的每个控件的tag属性中添加一个值,然后在VBA循环中通过控件并检查该值并更改其中的可见性.
将要分组的所有控件的tag属性设置为groupABC或任何您想要的内容.
然后在代码中的某处使用它来遍历表单控件并检查它.
Dim ctrl As Control
For Each ctrl In Me.Controls
If ctrl.Tag = "groupABC" Then
ctrl.Visible = False
End If
Next
Run Code Online (Sandbox Code Playgroud)
要详细说明我对使用自定义集合的评论,您可以在表单的模块中执行以下操作:
Private mcolGroupABC As New Collection
Private Sub IntializeCollections()
Dim ctl As Control
If mcolGroupABC.Count = 0 Then
For Each ctl in Me.Controls
If ctl.Tag = "GroupABC" Then
mcolGroupABC.Add ctl, ctl.Name
End If
Next ctl
Set ctl = Nothing
End If
End Sub
Private Sub Form_Load()
Call InitializeCollections
End Sub
Private Sub ShowControls(mcol As Collection, bolShow As Boolean)
Dim ctl As Control
For Each ctl In mcol
ctl.Visible = bolShow
Next ctl
Set ctl = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
要隐藏控件,您可以这样做:
Call ShowControls(mcolGroupABC, False)
Run Code Online (Sandbox Code Playgroud)
并向他们展示:
Call ShowControls(mcolGroupABC, True)
Run Code Online (Sandbox Code Playgroud)
这很简单,不是吗?
这是我一直在我的应用程序中使用的那种代码,自从大约 10 年前我第一次实现它以来,我一直在使用它,并注意到使用自定义集合而不是遍历整个 Controls 集合。
唯一需要注意的是,如果其中一个控件具有焦点,如果您尝试隐藏它,它将出错。这很容易解决,因为如果您要隐藏一组控件,那么在这样做之前您肯定有一个合适的位置来设置焦点。