为了问题的目的,我稍微缩短了我的代码,但我得到的错误是相同的。
当尝试在每个工作表上选择包含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 on each worksheet
Next
End Sub
我得到的错误是:
"Run-time error '1004': Method 'Range' of object'_Worksheet' failed.
答案 0 :(得分:5)
试试这个:
sh.Activate
sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row).Select
我确保范围参考在最右边的纸张上结束了 然后我最后返回最后的行号,并与可能不需要的列字符连接,但可能使您更容易调试。
<强>更新强>
添加了激活线。选择可能要求工作表处于活动状态。
<强> UPDATE2:强>
这是'正确'的方式,不使用选择 使用此方法直接引用需要按工作表移动工作表的工作表数据INSTEAD。 这种最佳实践将提高您的代码性能
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