Ниже предполагается, что у вас нет сгруппированных фигур FormControl.В нем будут перечислены все имена FormControl, которые TopLeftCell находится внутри диапазона GroupBox (от TopLeftCell до BottomRightCell ).
Вы можете добавить новый суб-код, который будет действовать по-другому длякаждый тип формы управления вы использовали.
Option Explicit
Sub ListControlsInGroupBoxes()
Dim oGroupBox As GroupBox
For Each oGroupBox In ThisWorkbook.ActiveSheet.GroupBoxes
ListObjectsInGroupBox oGroupBox
Next oGroupBox
End Sub
Private Sub ListObjectsInGroupBox(GBox As GroupBox)
Dim oBoxRange As Range, oShp As Shape
Set oBoxRange = Range(GBox.TopLeftCell, GBox.BottomRightCell)
Debug.Print String(50, "-")
Debug.Print "Group Box """ & GBox.Name & """ has range " & oBoxRange.Address
For Each oShp In GBox.Parent.Shapes
' Deal only with FormControls
If oShp.Type = msoFormControl Then
' Display FormControl's name if inside the GroupBox range
If Not Intersect(oShp.TopLeftCell, oBoxRange) Is Nothing Then
' Obmit itself
If Not oShp Is GBox Then
Debug.Print """" & oShp.Name & """"
End If
End If
End If
Next oShp
Set oBoxRange = Nothing
End Sub