Excel VBA 中的局部变量 window 中未显示范围值

Range value not shown in locals window in Excel VBA

我想知道为什么在局部变量 window 中列出的范围对象没有值 属性。 value2 列在那里。同时我在代码中使用了 Range.Value 并且它工作正常:

Set Rng = Range("D6:D9")
Set Rng2 = Range("B2:B5")
Rng2.Value = Rng.Value

是否意味着excel默认将Range值存储在value2中?我只是好奇它是如何工作的。

我相信 .Value 属性 没有在调试 windows 中单独列出,因为自 Office 版本 2007 以来,添加了一个可选参数,并且根据通过 class 模块,在局部变量 window 中只列出没有参数的属性。显示的另一个非常有用的 属性 是:.Address 但这同样有多个可选参数,所以我相信正是出于这个原因,它才没有被列出。另一方面,.Value2 不接受任何参数,因此出现在本地 window.

可选参数在 MS 帮助中列为:.Value(RangeValueDataType) 其中 RangeValueDataType 采用枚举值之一:

xlRangeValueDefault     
xlRangeValueMSPersistXML
xlRangeValueXMLSpreadsheet

但也许您错过了 .Value 确实出现在 Local/Watch window 中的顶层灰色 (如图所示)?这是因为.Value(xlRangeValueDefault)Range的默认值。