excel - 如何最好地分组 RadioButtons VBA Excel
问题描述
我想我可以通过为我想要组合在一起的那些设置不同的 LinkedCell 属性来对单选按钮进行分组,但是,在我的代码中,所有按钮最终都转到同一个 LinkedCell。我需要动态地对 RadioButtons 进行分组,因为组中的按钮数量会有所不同。我正在研究一个考试程序,需要将每个问题的 RadioButtons 组合在一起,完成此任务的最简单方法是什么?
- 第二天我发现我没有增加 RadioButtons 的名称,所以每个按钮都有相同的名称。我还把按钮变小了,这样它们就不会重叠了,当我手动放置 GroupBox 时,一切都可以工作了,现在我必须从 VBA 中添加它们并交叉手指。
For c = 1 To ExamData(i, 7)
ws.Range("C3").Offset(rOff + z, cOff).Value = ExamData(i, a) 'write answer
rbCapt = CaptSelect(c) 'Set choice letter as caption
Set t = ws.Cells(rOff + v, 2)
Set rb = ws.OptionButtons.Add(t.Left + 20, t.Top, t.Width, t.Height)
With rb
.caption = rbCapt
.Name = "Btn" & Trim(Str(b))
.LinkedCell = "A" + Trim(Str(myRow)) '<- When myRow changes all Buttons change
End With
解决方案
好吧,我完成了,添加 GroupBoxes 工作。这是最终代码:
For i = 1 To UBound(ExamData)
'write question number
ws.Range("B3").Offset(rOff, cOff).Value = Trim(Str(i)) + "."
myRow = ws.Range("B3").Offset(rOff, cOff - 1).Row 'row number of question
'write question
ws.Range("C3").Offset(rOff, cOff).Value = ExamData(i, 1)
'write answers & Radio Buttons
For c = 1 To ExamData(i, 7)
ws.Range("C3").Offset(rOff + z, cOff).Value = ExamData(i, a) 'write answer
rbCapt = CaptSelect(c) 'Get choice letter for radio button
Set t = ws.Cells(rOff + v, 2)
Set rb = ws.OptionButtons.Add(t.Left + 11, t.Top + 12, t.Width - 22, t.Height - 20)
With rb
.caption = rbCapt
.Name = "Btn" & Trim(Str(i)) & "-" & Trim(Str(b))
.LinkedCell = "D" + Trim(Str(myRow))
End With
v = v + 1
a = a + 1
b = b + 1
z = z + 1
Next c
'add GroupBox
pp = (myRow + 1 + ExamData(i, 7) - 1)
gbRange = "B" + Trim(Str(myRow + 1)) + ":B" + Trim(Str(pp))
Set vvv = ws.Range(gbRange)
Set gb = ws.GroupBoxes.Add(vvv.Left, vvv.Top, vvv.Width, vvv.Height)
With gb
.caption = ""
.Name = "gb" + Trim(Str(i))
End With
rOff = rOff + (ExamData(i, 7) + 2)
v = 4
z = 1
a = 2
Next i
推荐阅读
- enums - 在verilog中使用枚举
- email - 如何在没有 SMTP 的情况下通过 dataproc 集群发送带附件的邮件?
- neural-network - 试用完成后在哪里查看 microsoft nni run 的输出?
- powershell - 将日志复制到网络共享位置不起作用
- sql - 如何通过识别句子的字符[0-9A-Z,."#*]的最后位置来获取字符串
- java - 将 yml 转换为 application.properties
- java - java utf8 导出jar
- android - 如何通知屏幕底部导航栏中的浮动操作按钮在颤动中被按下?
- javascript - React Formik 不适用于数字输入
- c - newNode 是在没有从 createNode(int) 函数返回创建的节点的情况下创建的