excel-vba 避免在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" 在名为A1的工作表中 "MySheetName"

  • Active*如果您的用户感到无聊并单击另一个工作表或打开另一个工作簿,则使用会在长期运行的宏中造成问题。

  • 如果您的代码打开或创建另一个工作簿,则可能会产生问题。

  • 如果您的代码使用了它,Sheets("MyOtherSheet").Select并且在开始读或写它之前忘记了您在哪张纸上,可能会造成问题。