我在每行的前五个单元格上有五个选项按钮(表单控件)。选项按钮分别链接到每行的第六个单元格 我想在第六个单元格中获取索引号。
(选项按钮表单控件返回选项按钮的值,指示其状态为链接单元格。)
现在问题是从第二行开始,选项按钮的索引号大于5 所以第六个单元格中的值大于5.我希望它们在1到5之间。
(Index是OptionButton类的readonly属性)
如何实现这一目标? (最好没有vba)
感谢您对此进行调查。
答案 0 :(得分:3)
使用GroupBox在评论中说明围绕每组按钮将允许每个集合彼此独立地操作。在下面的图片中,我删除了GroupBox名称,并将组合框的边界与单元格边框排成一行,然后使用单元格边框几乎掩盖了组合框,因此除了主动选择的框架之外,您无法告诉它们甚至在那里(顶部)大多数人):
根据要求,这里有一些VBA代码。我建议在运行此代码之前,将行的高度设置为最少20个点。由于组合框的最小高度为19.5,单元格的宽度也将用于确定OptionButton的宽度,因此请确保使用宽度足够宽的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 +它所在的列号。