何时使用range.value?

这应该是简单的,但我不能find一个明确的答案。

如果我正在读/写一个范围,我什么时候使用范围名称,什么时候需要使用range.value? 如果范围是一个单元格或多个单元格,这有关系吗? 这个variables的types是什么? 或者范围内的数据的types? 有这个最好的做法吗?

例如,我应该写

`a = Range("Test")` 

或者我应该写

 `a = Range("Test").value` 

同样的,

 `Range("Test") = a` 

要么

 `Range("Test").value = a` 

在Excel Range对象中,默认memberValue

所以SomeVariable = Range("A1")SomeVariable = Range("A1").Value相同

同样, Range("A1") = SomeVariableRange("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").ValueMyar = 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来澄清实际的问题 –