简体   繁体   中英

Pop-Up Error Message (macro) - to update by checkbox selection - Excel 2010

I have a macro which is basically working as I want (alerting the user when two conflicting checkboxes are selected) - code below. The 1 in G2 is the value generated to indicate this case.

The error message fires on SelectionChange, but this appears to be only when another cell is selected by mouse. The worksheet contains a series of checkboxes for the user to select from, and the intention is for the user to only use the checkboxes, never needing to select or input directly into cells. In which case, the error message would never fire even when the scenario described has occurred.

Is there a way of having a msgbox macro trigger by the update of any checkbox on the sheet?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("G2") = 1 Then

    MsgBox "ERROR - Select AND Reject checked"

    End If

End Sub

Also, I would like to extend the range to apply to all the cells in column G, I just can't seem to get this to work for me. I have seen a few examples citing "G:G" but I have so far only got this to work for one cell.

Apologies in advance for any glaring errors, I've used Excel for a while now - but I'm brand new to using VBA.

Mutually exclusive options are usually indicated with option buttons (also known as radio buttons) instead of checkboxes. Is there any reason you're not using option buttons for this task?

As far as calling the same code for all checkboxes, the checkboxes would have to be Form Controls (not ActiveX Controls), and you could assign them to this macro:

Sub CheckBox_Clicked()

    Dim chk As CheckBox

    Set chk = ActiveSheet.CheckBoxes(Application.Caller)
    MsgBox chk.Name

End Sub

And lastly, for your SelectionChange event to monitor an entire column, it would look similar to this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM