Excel 在VBA中循环工作表时选择范围
为了回答这个问题,我把代码缩短了一点,但得到的错误是相同的 当尝试在每个工作表上选择A列中包含数据的单元格并对其执行操作时,我在第一个工作表后遇到一个错误:Excel 在VBA中循环工作表时选择范围,excel,vba,Excel,Vba,为了回答这个问题,我把代码缩短了一点,但得到的错误是相同的 当尝试在每个工作表上选择A列中包含数据的单元格并对其执行操作时,我在第一个工作表后遇到一个错误: Sub quickSub() Dim sh As Worksheet For Each sh In Worksheets sh.Range("A6", Range("A6").End(xlDown)).Select ''Random bits of code here where I manipulate selection
Sub quickSub()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Range("A6", Range("A6").End(xlDown)).Select
''Random bits of code here where I manipulate selection on each worksheet
Next
End Sub
我得到的错误是:
"Run-time error '1004': Method 'Range' of object'_Worksheet' failed.
试试这个:
sh.Activate
sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row).Select
我确保范围参考在右表上结束
我让end down返回最终的行号,并与列字母连接,这可能不需要,但可能会使您更容易调试
更新:
添加了激活行。选择可能需要激活图纸
更新2:
以下是不使用select的“正确”方法
使用此方法直接引用工作表数据,而无需逐个工作表移动。
此最佳实践将提高代码性能
Sub quickSub()
Dim sh As Worksheet
For Each sh In Worksheets
With sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row)
'- lines that manipulate the 'selection' in the above with
.Value = "NewValue"
.font.bold = true
End With
''Random bits of code here where I manipulate selection on each worksheet
Next
End Sub
试试这个:
sh.Activate
sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row).Select
我确保范围参考在右表上结束
我让end down返回最终的行号,并与列字母连接,这可能不需要,但可能会使您更容易调试
更新:
添加了激活行。选择可能需要激活图纸
更新2:
以下是不使用select的“正确”方法
使用此方法直接引用工作表数据,而无需逐个工作表移动。
此最佳实践将提高代码性能
Sub quickSub()
Dim sh As Worksheet
For Each sh In Worksheets
With sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row)
'- lines that manipulate the 'selection' in the above with
.Value = "NewValue"
.font.bold = true
End With
''Random bits of code here where I manipulate selection on each worksheet
Next
End Sub
谢谢你的回复!当我使用它时,发生了大致相同的事情,除了错误现在是:“运行时错误‘1004’:范围类的Select方法失败”更新的答案。在尝试选择工作表之前,请确保您正在激活该工作表。工作正常!非常感谢你的帮助!欢迎我添加了第二个答案,显示了一种替代的“更好”方式来完成您正在尝试的任务。这可能与一个小例子无关,但在编写大型项目时,这是一个绝对必要的最佳实践,因此最好尽快养成习惯,避免使用
Select
。就可以了!一般来说,我对VBA/编码比较陌生,所以像这样的任何提示都绝对有用。再次感谢!谢谢你的回复!当我使用它时,发生了大致相同的事情,除了错误现在是:“运行时错误‘1004’:范围类的Select方法失败”更新的答案。在尝试选择工作表之前,请确保您正在激活该工作表。工作正常!非常感谢你的帮助!欢迎我添加了第二个答案,显示了一种替代的“更好”方式来完成您正在尝试的任务。这可能与一个小例子无关,但在编写大型项目时,这是一个绝对必要的最佳实践,因此最好尽快养成习惯,避免使用Select
。就可以了!一般来说,我对VBA/编码比较陌生,所以像这样的任何提示都绝对有用。再次感谢!