我在每行的前五个单元格上有五个选项按钮(表单控件)。选项按钮分别链接到每行的第六个单元格,我想获取第六个单元格中的索引号。
(选项按钮表单控件将选项按钮的值返回给链接单元格,指示其状态。)
现在的问题是从第二行开始,选项按钮的索引号大于 5,因此第六个单元格中的值大于 5。我希望它们在 1 到 5 之间。
(索引是 OptionButton 类的只读属性)
如何实现?(最好没有vba)
感谢您调查它。
我在每行的前五个单元格上有五个选项按钮(表单控件)。选项按钮分别链接到每行的第六个单元格,我想获取第六个单元格中的索引号。
(选项按钮表单控件将选项按钮的值返回给链接单元格,指示其状态。)
现在的问题是从第二行开始,选项按钮的索引号大于 5,因此第六个单元格中的值大于 5。我希望它们在 1 到 5 之间。
(索引是 OptionButton 类的只读属性)
如何实现?(最好没有vba)
感谢您调查它。
如评论中所述,在每组按钮周围使用 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 + 它所在的列号。