弹出错误消息(宏) - 按复选框选择更新 - Excel 2010

时间:2013-08-08 21:24:48

标签: excel excel-vba checkbox popup vba

我有一个宏,它基本上按我的意愿工作(当选择两个冲突的复选框时提醒用户) - 下面的代码。 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的新手。

1 个答案:

答案 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