Чтобы уточнить мой комментарий по использованию пользовательских коллекций, вы должны сделать что-то подобное в модуле вашей формы:
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
Чтобы скрыть элементы управления, вы должны сделать следующее:
Call ShowControls(mcolGroupABC, False)
И показать им:
Call ShowControls(mcolGroupABC, True)
Это довольно просто, нет?
Это код, который я использую в своих приложениях все время, и я использовал его с тех пор, как впервые применил его, около 10 лет назад, и заметил, что его показывать / скрывать явно заметно элементов управления с пользовательской коллекцией, чем при обходе всей коллекции Controls.
Единственное предостережение в том, что если один из элементов управления имеет фокус, он выдаст ошибку, если вы попытаетесь скрыть его. Это достаточно легко решить, поскольку, если вы скрываете группу элементов управления, у вас наверняка есть подходящее место для установки фокуса, прежде чем вы это сделаете.