【发布时间】:2017-11-03 09:01:48
【问题描述】:
我有一个包含 20 个复选框的用户窗体框架,每个复选框代表不同颜色的衬衫。
当用户选择复选框时,我希望结果(标题,不是真/假)最终出现在活动行的单个单元格(第 8 列)中,用逗号分隔。
我是 VBA 编码和即时学习的新手 - 谁能帮忙?
【问题讨论】:
我有一个包含 20 个复选框的用户窗体框架,每个复选框代表不同颜色的衬衫。
当用户选择复选框时,我希望结果(标题,不是真/假)最终出现在活动行的单个单元格(第 8 列)中,用逗号分隔。
我是 VBA 编码和即时学习的新手 - 谁能帮忙?
【问题讨论】:
Edit1:删除_ 上If statement 的续行。
创建一个子例程来检查所有Checkboxes 并将数据传递给选定的单元格。
尝试这样的操作:
Private Sub GetSelection()
Dim c As MSForms.Control
Dim cbk As MSForms.CheckBox
Dim sel As String
For Each c In Me.Controls '/* Iterate all controls */
If TypeOf c Is MSForms.CheckBox Then '/* check if it is a checkbox */
Set cbk = c '/* Set as Checkbox to get the caption property */
If cbk Then '/* Check value, get caption if true */
If sel = "" Then
sel = cbk.Caption
Else
sel = sel & "," & cbk.Caption
End If
End If
End If
Next
'/* Transfer currently selected values in desired cell */
Sheet1.Range("H" & ActiveCell.Row).Value2 = sel '/* Used H for column 8 */
End Sub
那么你需要做的就是在你的所有CheckBox_Click事件中调用这个子例程。
Private Sub CheckBox1_Click()
GetSelection
End Sub
【讨论】:
If cbk Then _ 收到语法错误,我敢肯定答案一定是盯着我的脸!!
If statement。