这应该很简单,但我找不到明确的答案。
如果我正在读/写一个范围,我什么时候才使用范围名称,什么时候需要使用range.value?范围是一个细胞还是多个细胞是否重要?变量的类型是什么关系?或者范围内的数据类型?这是最好的做法吗?
例如,我应该写
`a = Range("Test")`
或者我应该写
`a = Range("Test").value`
同样,
`Range("Test") = a`
或
`Range("Test").value = a`
答案 0 :(得分:9)
在Excel Range
对象中,默认member
为Value
因此SomeVariable = Range("A1")
与SomeVariable = Range("A1").Value
同样Range("A1") = SomeVariable
与Range("A1").Value = SomeVariable
当你说a = Range("Test")
当您尝试将值从连续范围存储到Variant变量时,例如Test
范围指的是A1:A10
,那么您将得到一个值数组
Sub Sample()
Dim Myar
Myar = Range("A1:A10").Value
Debug.Print UBound(Myar)
End Sub
在这种情况下,Myar = Range("A1:A10").Value
再次与Myar = Range("A1:A10")
如果我正在阅读/写入某个范围,我何时只使用范围名称,何时需要使用range.value?
我不确定when do I just use the range name
你是什么意思,但是当你从一个范围读/写时,如果你使用.Value
则不重要。恕我直言,最好使用.Value
:)
范围是一个细胞还是多个细胞是否重要?
如果您使用.Value
,即使在这种情况下也不重要。
变量的类型是什么关系?
哦,是的!请参阅上面的数组示例
或范围内的数据类型?
Excel单元格可以存储各种类型的数据。从数字到日期到字符串。由于您不知道该类型可以是什么,因此建议您在使用它们时使用Variant
。这是一个经典的例子
让我们说单元格A1
有这个数字123456789
现在试试这段代码
Sub Sample()
Dim someVariable As Integer
someVariable = Range("A1").Value
Debug.Print someVariable
End Sub
现在试试这个
Sub Sample()
Dim someVariable As Variant
someVariable = Range("A1").Value
Debug.Print someVariable
End Sub
修改强>
如蒂姆·威廉姆斯所说
使用.Value对于“消除歧视”也很有用。常见的&#34;忘记在分配对象变量时使用Set&#34;问题 - 昏暗a:设置a =范围(&#34; A1&#34;)vs Dim a:a =范围(&#34; A1&#34;)在第二种情况下,总是使用.Value澄清实际问题 - < / p>