永遠不要假設工作表

即使你的所有工作都針對單個工作表,在程式碼中明確指定工作表仍然是一個很好的做法。這種習慣使得以後更容易擴充套件程式碼,或者提升 SubFunction 的部分(或全部)以便在其他地方重複使用。許多開發人員習慣於(重新)在程式碼中使用相同的本地變數名稱作為工作表,這使得重用程式碼變得更加直接。

例如,以下程式碼含糊不清 - 但有效! - 只要開發人員不啟用或更改為其他工作表:

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

上面的程式碼清楚地標識了工作簿和工作表。雖然看起來有點矯枉過正,但是建立一個關於目標引用的好習慣可以避免將來的問題。