何时使用range.value?
这应该是简单的,但我不能find一个明确的答案。
如果我正在读/写一个范围,我什么时候使用范围名称,什么时候需要使用range.value? 如果范围是一个单元格或多个单元格,这有关系吗? 这个variables的types是什么? 或者范围内的数据的types? 有这个最好的做法吗?
例如,我应该写
`a = Range("Test")`
或者我应该写
`a = Range("Test").value`
同样的,
`Range("Test") = a`
要么
`Range("Test").value = a`
在Excel Range
对象中,默认member
是Value
所以SomeVariable = Range("A1")
与SomeVariable = Range("A1").Value
相同
同样, Range("A1") = SomeVariable
与Range("A1").Value = SomeVariable
相同, Range("A1").Value = SomeVariable
当你说a = Range("Test")
时,你当然要小心
当您尝试将连续范围的值存储到variablesvariables中时,例如“ 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
或不。
这个variables的types是什么?
哦,是的! 看到上面的数组示例
或者范围内的数据的types?
Excel单元格可以存储各种types的数据。 从数字到date到string。 既然你不知道这个types是什么types的,build议在使用它时使用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
编辑:
正如Tim Williams所提到的那样
使用.Value对于“dis-ambiguate”常见的“忘记使用Set时,分配一个对象variables”的问题也是有用的 – Dim a:Set a = Range(“A1”)vs Dim a:a = Range(“A1” )在第二种情况下总是使用.Value来澄清实际的问题 –