请原谅我是VBA的新手。
有时候我用
Dim r as Range
r = Range("A1")
其他时候我用
Set r = Range("A1")
有什么不同?我什么时候应该使用什么?
set
除非引用对象引用,否则没有理由使用。最好在这种情况下使用它。对于所有其他简单数据类型,只需使用赋值运算符。但是,dim
(维度)所有变量是一个好主意:
简单数据类型的例子是integer
,long
,boolean
,string
。这些只是数据类型,没有自己的方法和属性。
Dim i as Integer
i = 5
Dim myWord as String
myWord = "Whatever I want"
一个示例为object
a Range
,a Worksheet
或a Workbook
。这些都有自己的方法和属性。
Dim myRange as Range
Set myRange = Sheet1.Range("A1")
如果您尝试不使用最后一行Set
,则VB将引发错误。现在您有了一个object
声明,可以访问其属性和方法。
myString = myRange.Value
我能知道您指的是哪本教程或书吗?
这个答案并不能真正解释“为什么”
VBA非常聪明,它不需要您像许多语言一样告诉它您在做什么。但是,这增加了时间。如果您在各种不同的变体上使用不同维度的整体主机,那么这会增加时间。如果您告诉VBA当看到一个变量时会发生什么,那么它就不必执行了。同样,如果您告诉VBA变量是整数而不是字符串,那么它不会占用太多RAM。尽管后一点在普通的小型VBA项目中可能不那么有效,但它仍然是良好的编码实践。
Set
不用先Dim
输入变量就可以使用吗?