run macro depending on cell value

bamaisgreat

Well-known Member
Joined
Jan 23, 2012
Messages
831
Office Version
  1. 365
Platform
  1. Windows
I have the code below in my worksheet. I keep getting the ambigous error. The last section of code is what im trouble with. Thanks as always.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    If Not Intersect(Target, Range("I4:I20")) Is Nothing Then
        Application.EnableEvents = False
        For Each cell In Intersect(Target, Range("I4:I20"))
            If Not IsEmpty(cell) Then
                Cells(cell.Row, "S").Value = Now
            Else
                Cells(cell.Row, "S").ClearContents
            End If
        Next cell
        Application.EnableEvents = True
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)




    If Target.Address = "$G$1:$J$1" Then
        Call FINALIZED_BY_QC_job
    ElseIf Target.Address = "$B$9,$B$11" Then
        Call SHOW_LIST
    End If
    End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$V$1" Then Exit Sub
If Target.Value = "Email" Then Call Email8 'macroname sunday


End Sub
 

Excel Facts

What do {} around a formula in the formula bar mean?
{Formula} means the formula was entered using Ctrl+Shift+Enter signifying an old-style array formula.
You cannot have two "Worksheet_Change" procedures on the same sheet. You will need to work the code of your second one into your first one.
 
Upvote 0
You cannot have two "Worksheet_Change" procedures on the same sheet. You will need to work the code of your second one into your first one.

Ok, i have tried the code below but Im still not having any success. Could you take a look ? Thanks

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Address = "$H$1:$K$1" Then
        Call FINALIZED_BY_QC_job
    End If
   
   
    If Target.Address = "$W$4,$W$8" Then
    Call Mail_Workbook_1
    End If
   
   
End Sub
 
Upvote 0
By
If Target.Address = "$H$1:$K$1" Then
do you mean you are checking to see if any cell in the range H1:K1 has been updated?
If so, you need to use the INTERSECT method, like in your original example.

Also, by
If Target.Address = "$W$4,$W$8" Then
do you mean checking to see if only W4 or W8 has been updated?
Then we need to check for that a bit differently, checking each cell address separately.

If my assumptions are correct, changing your code to this should work:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    
    If Not Intersect(Target, Range("H1:K1")) Is Nothing Then
        Call FINALIZED_BY_QC_job
    End If
   
    If (Target.Address = "$W$4") Or (Target.Address = "$W$8") Then
        Call Mail_Workbook_1
    End If

End Sub
 
Upvote 0
Sorry for not clarifying. I am simply holding down ctrl then selecting H1 then K1 to run the macro.
 
Upvote 0
If you select any cells in those areas, the macros should run, as it is written since it is a Worksheet_SelectionChange event procedure.
Note that it will run when ANY cells is selected in those ranges.
Do you only want it to run if ALL the cells in H1:K1 are selected, or both W4 and W8 are selected simultaneously?
 
Upvote 0
The H1:K1 work as they should. The one with the W4 and W8 is the new one Im wanting to add to the to the selection change. I would like it were when I hold CTRL and click on W4 and W8 it will run the macro. Thanks for you help.
 
Upvote 0
If you only want it to run when both W4 and W8 are selected simultaneously, change this line:
Code:
If (Target.Address = "$W$4") Or (Target.Address = "$W$8") Then
to this:
Code:
If (Not Intersect(Target, Range("W4")) Is Nothing) And (Not Intersect(Target, Range("W8")) Is Nothing) Then
 
Upvote 0
ok seems to be working good now. I did however add a unprotect and save before running the rest of the code and it has seemed to mess up. How can i work with this ?

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)


[COLOR=#ff0000]     ActiveSheet.Unprotect[/COLOR]
[COLOR=#ff0000]     ActiveWorkbook.Save[/COLOR]
    
    If Not Intersect(Target, Range("H1:K1")) Is Nothing Then
        Call FINALIZED_BY_QC_job
    End If
   
    If (Not Intersect(Target, Range("W4")) Is Nothing) And (Not Intersect(Target, Range("W8")) Is Nothing) Then
        Call Mail_Workbook_1
    End If
    
   [COLOR=#ff0000] ActiveSheet.Protect[/COLOR]


End Sub
 
Upvote 0

Forum statistics

Threads
1,224,522
Messages
6,179,299
Members
452,904
Latest member
CodeMasterX

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top