【发布时间】:2016-01-19 13:03:48
【问题描述】:
我有一个带有多个框架的用户表单,所有框架都填充了多个复选框。我已将复选框命名为对应的 Excel 单元格。现在我想让 VBA 在运行时单击这些复选框中的任何一个来运行。我知道我可以通过为每个单独的复选框创建一个 click-sub 来做到这一点,但必须有一种更简洁的方法来做到这一点。
到目前为止,我已尝试将此代码放入 userform_Click 和 userform_Mousedown 事件中,但是当我单击复选框时它们不会运行。有谁知道如何做到这一点?
Dim iControl As Control
For Each iControl In Me.Controls
If TypeName(iControl) = "CheckBox" Then
If iControl.Value = True And Range(iControl.Name).Value = "" Then
Range(iControl.Name).Value = Format(Now, "dd.mm.yyyy")
ElseIf iControl.Value = True And Range(iControl.Name).Font.Color = vbWhite Then
Range(iControl.Name).Font.Color = vbBlack
ElseIf iControl.Value = False And Range(iControl.Name).Value <> "" Then
Range(iControl.Name).Font.Color = vbWhite
End If
End If
Next
【问题讨论】:
-
您是否启用了宏?您是否确保您的工作簿不是 XLSX 文件?只有 XSL、XLSB 和 XLSM 文件可以运行宏。
-
是的,所有其他宏都可以正常工作。另外,如果我点击用户表单(所以不是在复选框和框架之外),代码就像它应该的那样。