如果未选择工作表,范围将失败

Mat*_*ech 0 excel vba

我有这段代码应该可以正常工作

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Auswertung")
...
ws.Range(Cells(2, 2), Cells(lastRow, lastCol)).NumberFormat = "0"
Run Code Online (Sandbox Code Playgroud)

但是,如果未选择工作表,则会失败。错误 1004,Methode Range 对于对象失败。

如果我把它改成

ws.Select
ws.Range(Cells(2, 2), Cells(lastRow, lastCol)).NumberFormat = "0"
Run Code Online (Sandbox Code Playgroud)

有用。

为什么?在VBA中我想避免select.

bra*_*raX 5

您也需要符合资格Cells...该Cells参考文献不会自动假定它引用的工作表与您ws.Range所期望的相同。它使用的假设ActiveSheet与您的对象不同Range

选项1:

ws.Range(ws.Cells(2, 2), ws.Cells(lastRow, lastCol)).NumberFormat = "0"
Run Code Online (Sandbox Code Playgroud)

选项2:

With ws
  .Range(.Cells(2, 2), .Cells(lastRow, lastCol)).NumberFormat = "0"
End With
Run Code Online (Sandbox Code Playgroud)