我有一个宏,它基本上按我的意愿工作(当选择两个冲突的复选框时提醒用户) - 下面的代码。 G2中的1是为表明这种情况而生成的值。
错误消息在SelectionChange上触发,但这似乎仅在鼠标选择了另一个单元格时出现。该工作表包含一系列供用户选择的复选框,目的是让用户仅使用复选框,而不需要直接选择或直接输入单元格。在这种情况下,即使发生了描述的场景,错误消息也不会触发。
是否有办法通过更新工作表上的任何复选框来触发msgbox宏?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("G2") = 1 Then
MsgBox "ERROR - Select AND Reject checked"
End If
End Sub
另外,我想扩展范围以适用于G列中的所有单元格,我似乎无法让这对我有用。我看到一些例子引用了G&G:G"但到目前为止,我只能将其用于一个单元格。
对任何明显的错误提前道歉,我已经使用了Excel一段时间 - 但我是使用VBA的新手。
答案 0 :(得分:0)
互斥选项通常用选项按钮(也称为单选按钮)表示,而不是复选框。您是否有任何理由不使用选项按钮执行此任务?
至于为所有复选框调用相同的代码,复选框必须是表单控件(不是ActiveX控件),您可以将它们分配给此宏:
Sub CheckBox_Clicked()
Dim chk As CheckBox
Set chk = ActiveSheet.CheckBoxes(Application.Caller)
MsgBox chk.Name
End Sub
最后,对于您的SelectionChange事件来监控整个列,它看起来与此类似:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ClickedCell As Range
Dim rngClicked As Range
Application.EnableEvents = False
Set rngClicked = Intersect(Columns("G"), Target)
If Not rngClicked Is Nothing Then
For Each ClickedCell In rngClicked.Cells
If ClickedCell.Value = 1 Then MsgBox "ERROR - Select AND Reject checked"
Next ClickedCell
End If
Application.EnableEvents = True
End Sub