在我的宏中,当我引用在单元格中找到的值时,我一直不一致地使用 .cell(r,c) 或 .cell(r,c).value。
dim c as variant
c = sheet1.cell(1,1) 'or sheet1.cell(1,1).value
两个引用文献都是正确的还是有首选的方法?
最佳答案
.Value
是范围对象的默认属性。因此,当您分配如下内容时:
myVar = myRange
它相当于
myVar = myRange.Value
,因为您分配的是变量而不是对象。但是,如果您使用
Set
, 像这样:Set myObj = myRange
您将分配一个对象引用。关键词
Set
告诉 VBA 您正在分配一个对象引用。缺席 Set
使 VBA 得出结论,您隐含地想要获得 .value
,范围的默认属性。使用
.value
是一个很好的编程习惯明确地说,有两个原因:1-它使代码更具可读性,因为读者不必隐式猜测发生了什么
2- 随着
VB.net
的出现, 关键字 Set
已经消失;分配对象或普通变量的语法变得相同。由于这个原因,默认的属性习惯用法在 VB.net 中消失了。因此,好的做法是使用 .value
在 VBA 中也是如此,因为它使您的代码最终移植到 VB.net 变得更加容易。
关于vba - (VBA) 何时使用 .cell(1,1) 或 .cell(1,1) 值引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42894223/