Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA中的“局部变量”窗口中未显示范围值_Vba_Range - Fatal编程技术网

Excel VBA中的“局部变量”窗口中未显示范围值

Excel VBA中的“局部变量”窗口中未显示范围值,vba,range,Vba,Range,我想知道为什么在“局部变量”窗口中没有列出范围对象的值属性。此处列出了值2。同时,我在代码中使用Range.Value,它工作正常: Set Rng = Range("D6:D9") Set Rng2 = Range("B2:B5") Rng2.Value = Rng.Value 这是否意味着excel默认将范围值存储在value2中?我只是好奇它是如何工作的。我相信调试窗口中没有单独列出.Value属性,因为自Office 2007版以来,添加了一个可选参数,并且根据通过类模块编写目标代码的

我想知道为什么在“局部变量”窗口中没有列出范围对象的值属性。此处列出了值2。同时,我在代码中使用Range.Value,它工作正常:

Set Rng = Range("D6:D9")
Set Rng2 = Range("B2:B5")
Rng2.Value = Rng.Value
这是否意味着excel默认将范围值存储在value2中?我只是好奇它是如何工作的。

我相信调试窗口中没有单独列出.Value属性,因为自Office 2007版以来,添加了一个可选参数,并且根据通过类模块编写目标代码的经验,只有没有参数的属性列在本地窗口中。显示的另一个非常有用的属性是:。Address,但它也有多个可选参数,因此我认为它没有列出是因为这个原因。另一方面,Value2不接受任何参数,因此会显示在“局部变量”窗口中

可选参数在MS帮助中列为:.ValueRangeValueDataType,其中RangeValueDataType采用以下枚举值之一:

xlRangeValueDefault     
xlRangeValueMSPersistXML
xlRangeValueXMLSpreadsheet
但可能您没有注意到。值是否以灰色显示在本地/监视窗口的顶层,如图所示?这是因为.ValuexlRangeValueDefault是范围的默认值


谢谢,我认为这是一个合乎逻辑的解释。关于顶部显示的值,我看到它确实显示在Waches窗口中,但只要范围是单个单元格。对于由多个单元格组成的区域,只有值2显示为数组。是的,您是正确的。只有当区域由单个单元格组成时,才会显示默认值。Value2在某种意义上是原生Excel值,访问速度可能更快,因为它不必读取单元格的格式化编号,只需读取基础值即可。