我认为我可以通过为希望分组在一起的单选按钮设置不同的LinkedCell属性来对单选按钮进行分组,然而,在我的代码中,所有按钮最终都转到了同一个LinkedCell。我需要对RadioButtons进行动态分组,因为分组中的按钮数量各不相同。我正在编写一个考试程序,需要将每个问题的RadioButtons分组在一起,最简单的方法是什么?
有一天,我发现我没有递增RadioButtons的名称,所以每个按钮都有相同的名称。我还使按钮更小,这样它们不会重叠,当我手动放置GroupBoxes时,我得到了所有的工作,现在我必须从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发布于 2020-11-18 00:22:48
我在做了很多工作,添加了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 ihttps://stackoverflow.com/questions/64865896
复制相似问题