VBA范围变量在剪切后消失了

时间:2019-01-03 11:58:14

标签: excel vba 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

2 个答案:

答案 0 :(得分:4)

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

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

剪切将完全替换实际的单元,而不是简单地覆盖其内容,因此Range所跟踪的单元不再存在,并且其他某些单元现在将采用A15的地址。不过,那是一个不同的单元格,因此您的Range实例不见了。

一个值得注意的例外是仅销毁Range的一部分。在这种情况下,Range接受新的单元格并保持其形状。例如。如果您存储了Range("A15:A20"),并在Range("A1:A3")上剪切了A15,则结果范围仍为A15:A20

答案 1 :(得分:0)

似乎https:myapp.mydomain.com/?envelopeId=[[envelopeId]]&recipientId=[[recipientId]]&recipientName=[[recipientName]]& recipientEmail=[[recipientEmail]]由于@GSerg原因正在清除范围变量。

使用此代码有效,但是如果最后将其破坏,则该变量将一直存在,直到发生粘贴为止。

.paste

如果将消息框移至粘贴之后,即使未像在剪切中那样使用它,它也会清除With Sheets(1) Set des = .Range("A15") .Range("A1:A3").Cut des.Cells(1, 1).Select MsgBox (des.Row + 5) ActiveSheet.Paste End With

我将做更多调查。 des对象仍然以des的形式存在,但没有填充。

此方法还可以完成剪切操作

range