1. 在 Sub 與 End Sub 中間先包上 If ActiveSheet.Name="Sheet1" Then 與 End If 的敘述,
以確保程式不會作用到錯誤的標的上,
不過在某些情形下其內的程式也可能根本就不會執行了.
2. 在 Module 上方加上 Public Sh As Worksheet 的共用指標宣告,
再於 Workbook 的 Open 方法程式內加上,
Set sh = Sheets("sheet2") 之類的指令來指定要作用的Sheet目標,
之後不管在哪裡都可以用 With sh 與 End With 或是 sh.[A1] 之類的指令來定死要作用的 Sheet.
'
Rows("6:6").Select
ActiveSheet.ShowAllData
Range("A5").Select
End Sub
Sub Macro2()
'
' Macro2 Macro
' 篩選A
'
'
ActiveSheet.Range("$A$6:$G$16").AutoFilter Field:=2, Criteria1:="<>"
Range("A5").Select
Application.OnTime Now + TimeValue("00:00:03"), "Macro2"
測試A.xlsm-ThisWorkbook(程式碼)
Private Sub Workbook_Open()
Sheet1.Select
Set Sh = Sheets("sheet2")
End Sub
測試Bxlsm-Module1(程式碼)
Sub Macro1()
'
' Macro1 Macro
' 清除B
'
'
Rows("1:1").Select
ActiveSheet.ShowAllData
Range("A1").Select
End Sub
Sub Macro2()
'
' Macro2 Macro
' 篩選B
'
'
ActiveSheet.Range("$A$6:$G$16").AutoFilter Field:=1, Criteria1:="<>"
Range("E1").Select
Application.OnTime Now + TimeValue("00:00:03"), "Macro2"
End Sub
測試B.xlsm-ThisWorkbook(程式碼)
Private Sub Workbook_Open()
Sheet1.Select
Set Sh = Sheets("sheet2")
End Sub