剪切后 VBA 范围变量消失

Kua*_*Yeh 2 excel vba range

424错误。有没有人能告诉我为什么切割后范围变量消失了?

with sheets(1)
Dim des as range
set des = .range("A15")
.range("A1:A3").cut des
msgbox(des.row+5)
end with
Run Code Online (Sandbox Code Playgroud)

GSe*_*erg 5

Range对象存储参考特定的细胞,而不是特定的地址。当引用的单元格四处移动时,Range对象将跟随。例如,如果您存储 aRange("B1")然后在 A 和 B 之间插入一列,您的变量现在将具有Range("C1"),因为您B1已向右移动。

当跟踪的单元格不再存在时,该Range实例将变得无法使用。

切割会完全替换实际单元格而不是简单地覆盖它们的内容,因此您Range正在跟踪的单元格不再存在,而其他一些单元格现在将采用A15. 这是一个不同的单元格,所以你的Range实例已经消失了。

一个值得注意的例外是当您仅销毁Range. 在这种情况下,Range接受新单元格并保持其形状。例如,如果您存储Range("A15:A20")Range("A1:A3")A15,由此获得的范围仍然是A15:A20