【发布时间】:2020-04-05 12:13:59
【问题描述】:
我有这段代码应该可以正常工作
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Auswertung")
...
ws.Range(Cells(2, 2), Cells(lastRow, lastCol)).NumberFormat = "0"
但是,如果未选择工作表,则会失败。错误 1004,对象的 Methode Range 失败。
如果我把它改成
ws.Select
ws.Range(Cells(2, 2), Cells(lastRow, lastCol)).NumberFormat = "0"
它有效。
为什么?在 VBA 中我想避免 select。
【问题讨论】:
-
你也需要符合
Cells...ws.Cells -
@braX 为什么在使用 select 时不需要限定它?
-
@theVBE-it'srightforme 否则
Cells指的是 ActiveSheet,可能是错误的工作表。 -
Unqualified Cells / Range 对象总是指向 ActiveSheet。选择“Auswetung”时,细胞指向它。如果选择了另一张工作表,则它指向该工作表。您收到错误的原因是您尝试使用另一张纸上的单元格 (
[ActiveSheet.]Cells(2,2)) 在 ws (ws.Range) 上创建一个范围 -
使用:
With ws .Range(.Cells(2, 2), .Cells(lastRow, lastCol)).NumberFormat = "0" End with