避免在 Excel 中使用 ActiveCell 或 ActiveSheet

如果(出於任何原因)程式碼在錯誤的位置執行,使用 ActiveCellActiveSheet 可能是錯誤的來源。

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 並且在你開始閱讀或寫入之前忘記了你所使用的工作表,則可能會產生問題。