1

出于问题的目的,我已经稍微缩短了我的代码,但我得到的错误是一样的。

当尝试在每个工作表上选择具有 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.
4

1 回答 1

5

尝试这个:

sh.Activate
sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row).Select

我确保范围引用在右表上结束并且我让结束返回最后的行号并与可能不需要的列字母连接,但可能会让您更容易调试。

更新:

添加了激活线。选择可能需要工作表处于活动状态。

更新2:

这是不使用选择执行此操作的“正确”方法使用此方法直接引用工作表数据而不是需要逐个工作表移动工作表。此最佳实践将提高您的代码性能

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
于 2012-11-26T23:19:47.027 回答