(VBA)何时使用.cell(1,1)或.cell(1,1).value reference

los*_*cle 4 vba

在我的宏中,当我引用一个单元格中找到的值时,我一直不一致地使用.cell(r,c)或.cell(r,c).value.

dim c as variant 
c = sheet1.cell(1,1) 'or sheet1.cell(1,1).value
Run Code Online (Sandbox Code Playgroud)

两个参考都是正确的还是有一种首选方式?

A.S*_*S.H 6

.Value是范围对象的默认属性.因此,当你分配这样的东西时:

myVar = myRange
Run Code Online (Sandbox Code Playgroud)

它等同于myVar = myRange.Value,因为您分配的变量不是Object.

但是,如果你使用Set,像这样:

Set myObj = myRange
Run Code Online (Sandbox Code Playgroud)

您将分配对象引用.该关键字Set告诉VBA您正在分配对象引用.没有Set让VBA得出结论,你暗中想要得到范围.value默认属性.

.value出于两个原因,明确使用它是一种很好的编程习惯:

1-它使代码更具可读性,因为读者无需隐式猜测发生了什么

2-随着VB.net关键字的出现,关键字Set已经消失; 分配对象或普通变量的语法变得相同.出于这个原因,默认属性惯用法已经随VB.net消失了.因此,良好的做法是.value在VBA中使用,因为它使您的代码最终移植到VB.net更容易.