如评论中所述,在每组按钮周围使用 GroupBox 将允许每组彼此独立操作。在下面的图片中,我删除了 GroupBox 名称并在 groupboxes 的边界上排列了 cell 边框,然后使用 cell 边框几乎掩盖了 groupbox,因此除了主动选择的那个(顶部大多数):
根据要求,这里提供了一些 VBA 代码。我建议在运行此代码之前将行的高度设置为至少 20 点。由于 groupbox 的最小高度为 19.5,而且单元格的宽度将用于确定 OptionButtons 的宽度,因此请确保使用的宽度足以容纳 OptionButton 的文本。
Sub Sample()
Dim Top As Variant, Left As Variant, Height As Variant, Width As Variant
Dim rngActiveRowA As Range, rngEndOfBox As Range
Dim lngActiveRow As Long, lngActiveColumn As Long
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
For lngActiveRow = 1 To 5
Set rngActiveRowA = Range("A" & lngActiveRow)
Set rngEndOfBox = Range("F" & lngActiveRow + 1)
Top = rngActiveRowA.Top
Left = rngActiveRowA.Left
Height = rngEndOfBox.Top - Top
Width = rngEndOfBox.Left - Left
ActiveSheet.GroupBoxes.Add(Left, Top, Width, Height).Caption = ""
For lngActiveColumn = 1 To 5
With ActiveSheet
Top = .Cells(lngActiveRow, lngActiveColumn).Top
Left = .Cells(lngActiveRow, lngActiveColumn).Left
Height = .Cells(lngActiveRow + 1, lngActiveColumn + 1).Top - Top
Width = .Cells(lngActiveRow + 1, lngActiveColumn + 1).Left - Left
End With
With ActiveSheet.OptionButtons.Add(Left, Top, Width, Height)
.Characters.Text = "OB" & lngActiveColumn
.LinkedCell = "$F$" & lngActiveRow
End With
Next lngActiveColumn
Next lngActiveRow
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
此代码将在前 5 行的每行的前 5 列周围创建一个组框。它还将在该区域的每个单元格中填充一个选项按钮,该区域链接到相应行中的 F 单元格。并将每个按钮重命名为 OB + 它所在的列号。