避免在 Excel 中使用 ActiveCell 或 ActiveSheet
如果(出於任何原因)程式碼在錯誤的位置執行,使用 ActiveCell
或 ActiveSheet
可能是錯誤的來源。
ActiveCell.Value = "Hello"
'will place "Hello" in the cell that is currently selected
Cells(1, 1).Value = "Hello"
'will always place "Hello" in A1 of the currently selected sheet
ActiveSheet.Cells(1, 1).Value = "Hello"
'will place "Hello" in A1 of the currently selected sheet
Sheets("MySheetName").Cells(1, 1).Value = "Hello"
'will always place "Hello" in A1 of the sheet named "MySheetName"
- 如果你的使用者感到無聊並點選其他工作表或開啟另一個工作簿,則使用
Active*
會在長時間執行的巨集中產生問題。 - 如果你的程式碼開啟或建立另一個工作簿,它可能會產生問題。
- 如果你的程式碼使用
Sheets("MyOtherSheet").Select
並且在你開始閱讀或寫入之前忘記了你所使用的工作表,則可能會產生問題。