永遠不要假設工作表
即使你的所有工作都針對單個工作表,在程式碼中明確指定工作表仍然是一個很好的做法。這種習慣使得以後更容易擴充套件程式碼,或者提升 Sub
或 Function
的部分(或全部)以便在其他地方重複使用。許多開發人員習慣於(重新)在程式碼中使用相同的本地變數名稱作為工作表,這使得重用程式碼變得更加直接。
例如,以下程式碼含糊不清 - 但有效! - 只要開發人員不啟用或更改為其他工作表:
Option Explicit
Sub ShowTheTime()
'--- displays the current time and date in cell A1 on the worksheet
Cells(1, 1).Value = Now() ' don't refer to Cells without a sheet reference!
End Sub
如果 Sheet1
處於活動狀態,則 Sheet1 上的單元格 A1 將填充當前日期和時間。但是,如果使用者出於任何原因更改了工作表,則程式碼將更新工作表當前處於活動狀態的任何內容。目標工作表不明確。
最佳做法是始終確定程式碼所涉及的工作表:
Option Explicit
Sub ShowTheTime()
'--- displays the current time and date in cell A1 on the worksheet
Dim myWB As Workbook
Set myWB = ThisWorkbook
Dim timestampSH As Worksheet
Set timestampSH = myWB.Sheets("Sheet1")
timestampSH.Cells(1, 1).Value = Now()
End Sub
上面的程式碼清楚地標識了工作簿和工作表。雖然看起來有點矯枉過正,但是建立一個關於目標引用的好習慣可以避免將來的問題。