Читая комментарии, звучит так, будто каждый раз, когда вы выбираете другое значение из одного из трех раскрывающихся списков, вы хотите запустить три макроса, в зависимости от выбранных значений.Если это так, то вам не нужно перебирать целевые ячейки (можно назначить только одну, используя раскрывающийся список в любом случае).
Все, что вам нужно сделать, - это определить, что одна из трех ячеек была изменена, и затем на основе трех конкретных ячеек запустить соответствующие макросы.
Private Sub Worksheet_Change(ByVal Target As Range)
' This is all that you have to check, before deciding to run the macros
If Intersect(Target, Range("C4,C23,C32")) Is Nothing Then Exit Sub
Select Case Range("C4").Value
Case "Ecommerce"
Call Ecommerce
Case "Non-Commerce"
Call NonCommerce
Case "Ecommerce & Non-Commerce", "Select Ecommerce/Non-Commerce"
Both
End Select
Select Case Range("C23").Value
Case "Select Year"
Call SelectYear
Case "2020"
Call Twentytwenty
Case "2021"
Call TwentyOne
Case "2022"
Call TwentyTwo
Case "2023"
Call TwentyThree
Case "2024"
Call TwentyFour
Case "2025"
Call TwentyFive
End Select
Select Case Range("C32").Value
Case "Select PPC"
Call SelectPPC
Case "PPC 2"
Call PPCTwo
Case "PPC 3"
Call PPCThree
Case "PPC 4"
Call PPCFour
Case "PPC 5"
Call PPCFive
Case "PPC 6"
Call PPCSix
Case "PPC 7"
Call PPCSeven
End Select
End Sub
Или еще лучше, послушатьBruceWayne, и вы получите что-то вроде этого:
Private Sub Worksheet_Change(ByVal Target As Range)
' This is all that you have to check, before deciding to run the macros
If Intersect(Target, Range("C4,C23,C32")) Is Nothing Then Exit Sub
Select Case Range("C4").Value
Case "Ecommerce"
Ecommerce
Case "Non-Commerce"
NonCommerce
Case "Ecommerce & Non-Commerce", "Select Ecommerce/Non-Commerce"
Both
End Select
If IsNumeric(Range("C23").Value) Then SelectYear CInt(Range("C23").Value)
If IsNumeric(Mid(Range("C32").Value, 5)) Then SelectPPC CInt(Mid(Range("C32").Value, 5))
End Sub
Sub SelectYear(Year As Integer)
' Do stuff
End Sub
Sub SelectPPC(Value As Integer)
' Do stuff
End Sub
К вашему сведению, вам не нужно использовать Call
.Единственная реальная разница, которую он имеет, заключается в том, требуются ли скобки или нет, когда Sub
-программа имеет параметры.