在所有的macros被执行后如何保持代码有效

我已经编写了多个macros,这些macros将被一个命令button执行,但是我希望我的最后一个macros在执行macros之前保持活动状态。 我希望Macro15在之后保持活跃状态​​。 而对于Macro15我想要如果任何单元格更改我想用colorindex 3突出显示该单元格

Sub RunallMacros() macro1 macro2 macro3 macro5 Macro12 Macro13 Macro14 Macro15 End Sub Sub macro1() ThisWorkbook.Sheets("Main").Activate End Sub Sub macro2() Dim myvalue As Variant myvalue = InputBox("Enter Safety Stock Days") Range("R5").value = myvalue End Sub Sub macro5() Dim answer As Integer answer = MsgBox("Are There Any ICF Forms?", vbYesNo + vbQuestion, "Other Sales") If answer = vbYes Then ICFUserForm.Show End Sub Sub macro3() Dim MyAnswer1 As Variant Dim MyAnswer2 As Variant Dim MyAnswer3 As Variant Dim MyAnswer4 As Variant Dim MyAnswer5 As Variant MyAnswer1 = InputBox("Enter Growth Current Month") Range("m3").value = MyAnswer1 MyAnswer2 = InputBox("Enter Growth Current Month+1") Range("n3").value = MyAnswer2 MyAnswer3 = InputBox("Enter Growth Current Month+2") Range("o3").value = MyAnswer3 MyAnswer4 = InputBox("Enter Growth Current Month+3") Range("p3").value = MyAnswer4 MyAnswer5 = InputBox("Enter Growth Current Month+4") Range("q3").value = MyAnswer5 End Sub Sub Macro12() ActiveCell.FormulaR1C1 = "='raw data'!R[-5]C" Range("A7").Select Selection.AutoFill Destination:=Range("A7:A500"), Type:=xlFillDefault End Sub Sub Macro13() Range("C7").Select Selection.ClearContents End Sub Sub Macro14() For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Raw" And ws.Name <> "Main" And ws.Name <> "Calendar" Then For Each c In ws.Range("A50:A300") ws.Rows(c.Row).Hidden = c.value = 0 Next End If Next End Sub Sub Macro15() If Not Intersect(Target, Range("A7:AH500")) Is Nothing Or _ Not Intersect(Target, Range("A7:AH500")) Is Nothing Then Target.Interior.ColorIndex = 3 End If End Sub 

来自保罗的好回答 – 试试这个让它工作;

 Private Sub Worksheet_Change(ByVal Sh As Object, ByVal Target as Range) Target.Interior.ColorIndex = 3 End Sub 

一个“主动”的macros正在做某事,即正在执行代码。 在执行代码时,用户不能做任何事情。 所以无论macros是活跃还是用户活跃。

你想要的是响应一个事件,在这种情况下, Worksheet.Change事件:

 Private Sub Worksheet_Change(ByVal Target as Range) Target.Interior.ColorIndex = 3 End Sub 

请参阅https://msdn.microsoft.com/en-us/library/office/ff839775.aspx