2014-10-28 36 views
1

我设定一个范围到另一个:我将一个范围设置为另一个范围。当我删除原始范围时,另一个被清除。为什么?

“保存一行信息

Set rRow = loSrc.ListRows(lListRowIndex).Range 

当我删除源,rRow被清除。

'Delete row from table 
loSrc.ListRows(lListRowIndex).Delete 

为什么会发生这种情况?如果我写这将不会发生:

iNumber = iSource + 1 
iSource is nothing 

而且更重要的是,我怎么能阻止这种情况发生,这样我就可以使用rRow loSrc.ListRows(lListRowIndex).Delete已执行后还是一样。

+1

+1这是一个非常有趣的问题,我注意到这一次,但没有找到一个然后回答。 – 2014-10-28 12:29:28

+0

您能否请添加一些关于代码的更多信息?至少具有所涉及变量的定义(例如'loSrc','iNumber','iSource')将是非常好的。无论如何,我怀疑你正在引用Range对象(所以当它被删除时,对象'rRow'也会这样)。 – 2014-10-28 13:44:55

+1

PS:set关键字创建对对象的引用(source [here](http://stackoverflow.com/a/349636/3111149)) – 2014-10-28 13:48:01

回答

0

Matteo NNZs评论帮助我理解这一点。

Set keywork创建对该对象的引用。当我删除对象时,引用也受到影响。

通过使用

Dim vRow() as variant 

,而不是

rRow as range 

我能写:

vRow = loSrc.ListRows(lListRowIndex).Range 
loSrc.ListRows(lListRowIndex).Delete 

,并VROW保留其值

相关问题