我想知道为什么这个简单的代码会抛出一个" Object Required"我尝试运行它时出错。我无法找到任何理由为什么VBA会遇到麻烦。它编译好,但无法运行。
Sub Test()
Dim X, Y, Z As Range
Set X = Sheets(1).Range("A1")
Set Y = Sheets(2).Range("A1")
Set Z = Sheets(3).Range("A1")
With X And Y And Z
.Value = "Test" 'FAILS HERE
End With
End Sub
我确定它的东西很小,或者VBA可能无法解决这个问题?
答案 0 :(得分:4)
如果你这么做,请创建一个辅助程序:
Sub setValueOf(value As String, ParamArray ranges())
Dim i As Long
For i = 0 To UBound(ranges)
ranges(i).value = value
Next
End Sub
然后您可以传递1个或更多范围;
setValueOf "Test", Sheets(1).Range("A1"), Sheets(2).Range("A1"), Sheets(3).Range("A1"), [B5], ...
答案 1 :(得分:3)
VBA正试图使用逻辑' X和Y和Z'作为你的with语句中的对象,这可能不是你想要的
你需要:
X.Value = "Test"
Y.Value = "Test"
Z.Value = "Test"
而不是
(X AND Y AND Z).Value = "Test"
答案 2 :(得分:2)
您可以使用循环设置范围值: -
Sub Test()
Dim i
For i = 1 to 3
sheets(i).range("A1").value = "TEST"
Next
End Sub