【问题标题】:Pop-Up Error Message (macro) - to update by checkbox selection - Excel 2010弹出错误消息(宏) - 通过复选框选择更新 - Excel 2010
【发布时间】:2013-08-10 18:42:20
【问题描述】:

我有一个宏,它基本上可以按我的意愿工作(在选中两个冲突的复选框时提醒用户)- 代码如下。 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”的例子,但到目前为止我只让这个对一个细胞起作用。

对于任何明显的错误,我提前道歉,我已经使用 Excel 有一段时间了 - 但我对使用 VBA 是全新的。

【问题讨论】:

    标签: excel checkbox popup vba


    【解决方案1】:

    互斥选项通常用选项按钮(也称为单选按钮)而不是复选框来表示。您是否有任何理由不为此任务使用选项按钮?

    就所有复选框调用相同的代码而言,复选框必须是表单控件(而不是 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 2013-06-23
      • 2018-06-21
      • 2018-03-12
      相关资源
      最近更新 更多