OptionButton索引问题

我有五个选项button(窗体控件)每行的前五个单元格。 选项button分别链接到第六个单元格的每一行,我想获得第六个单元格中的索引号。

(选项button表格控件将指示其状态的选项button的值返回给链接的单元格。)

现在问题是从第二行开始,选项button的索引号大于5,所以第六个单元格中的值大于5.我想要它们在1到5之间。

(索引是OptionButton类的只读属性)

这怎么能实现? (最好不用vba)

感谢您的关注。

正如使用GroupBox的注释中所述,围绕每一组button将允许每组独立操作。 在下面的图片中,我删除了GroupBox名称,并将单元格边框的边框与单元格边框alignment,然后使用单元格边框几乎遮住了分组框,所以除了主动select的边框之外,最多):

在这里输入图像说明

根据要求,这里是一些VBA代码。 我会build议在运行这个代码之前,把行的高度设置为最less20点。 由于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列创build一个groupbox。 它也将在与其各自行中的F单元相连的区域的每个单元内填充选项button。 并将每个button重命名为OB +它所在的列号。