For ... Each
不允许逗号in
后分隔的参数,所以你必须出示“一”的范围吧...
如果你想说For Each cell ...
则必须使用范围分解成细胞
他们.Cells
财产
内For ... Each
然后你应该用循环变量(cell
)代替X
,Y
,工作Z
例
Sub Test()
Dim X As Range, Y As Range, Z As Range
Dim C As Range
Set X = [A1]
Set Y = [B1:B2]
Set Z = [C1:C3]
For Each C In Union(X.Cells, Y.Cells, Z.Cells)
MsgBox C.AddressLocal
Next C
End Sub
为Union(...)
替代语法将
For Each C In Union(X, Y, Z).Cells
这可能使它更清晰,你tieing 3米范围在一起,然后解决他们的每一个细胞...味道的问题可能
编辑 要形成你的(大小相等)的三倍范围,并将它们送入单一的功能,计算范围Y偏移量和Z到X的假设下
例如
Sub Test()
Dim X As Range, Y As Range, Z As Range
Dim C As Range
Dim OYR As Long, OYC As Long, OZR As Long, OZC As Long
Set X = [A1:A5]
Set Y = [B3] 'no need to provide full range, starting point will do
Set Z = [C5]
' calculating offsets
OYR = Y(1, 1).Row - X(1, 1).Row + 1
OYC = Y(1, 1).Column - X(1, 1).Column + 1
OZR = Z(1, 1).Row - X(1, 1).Row + 1
OZC = Z(1, 1).Column - X(1, 1).Column + 1
' iterate thru all cells of X and their equally ofsett partners in Y and Z
For Each C In X.Cells
MsgBox C.AddressLocal & " " & C(OYR, OYC).AddressLocal & " " & C(OZR, OZC).AddressLocal
Next C
End Sub
有可能是一个问题(某人)隐藏在内。你可以帮我找到它,所以我们可以回答它:http://stackoverflow.com/tour – Ralph
对不起,修正它 – AltoidsBenefitsH