Dim x, y as Date
这两个代码语句之间有什么区别
Dim x as Date, y as Date
差异的实用结果是什么?我遗漏了哪些其他隐藏的声明功能?
答案 0 :(得分:4)
Dim x, y as Date
相当于:
Dim x
Dim y as Date
,这相当于:
Dim x as Variant
Dim y as Date
当您省略变量的类型时,它会采用Variant
类型
根据您的问题进行修改:
Dim a! ' same as Dim a as Short
Dim b@ ' same as Dim b as Currency
Dim c# ' same as Dim c as Double
Dim d$ ' same as Dim d as String
Dim e% ' same as Dim e as Integer
Dim f& ' same as Dim f as Long
参考:http://bytes.com/topic/visual-basic/answers/643371-declaration-shortcuts
答案 1 :(得分:3)
Dim x, y as Date
每个变量都需要 As <Type>
,所以在上面的示例中,只有y
是Date
; x
是Variant
(未指定类型时的默认值)
Dim x as Date, y as Date
两个变量均为Dates
,因为每个变量都有As
。
答案 2 :(得分:3)
为了易读性,我通常喜欢在同一行声明一个变量内容,我用其他语言声明它们。是否有任何捷径可以做到这一点?
对于Constant
表达式,是:
Const i as Integer = 6
Const myName as String = "David Zemens"
对于动态变量,如果不使用冒号就不可能,即Dim i as Integer: i = 6
,但冒号实际上被解释为换行符,所以这样做没有真正的优势
虽然在设计时分配已知的简单值可以通过这种方式完成,但如果你环顾四周,我会发现这在VBA编程中并不经常使用。相反,您通常会在模块/过程的顶部看到 ALL 声明,然后是那些需要初始值的变量的赋值语句。所有其他分配在运行时发生在代码中需要进行或更改分配的位置
Dim i as Integer
Dim x as Date
Dim y as Date
i = 1
x = DateValue(Now())
y = DateAdd("d", i, x)
MsgBox y
比较以下内容:
Dim i as Integer: i = 6
够简单吧?但是怎么样:
Dim i as Integer: i = SomeFunction(arg1, arg2, obj.Property1)
上述方法可行,但当然 ONLY 如果在此声明之前分配了函数的参数,则实例化任何对象变量等。
我所说的是,虽然在某些情况下你可以这样做,但在绝大多数情况下这样做根本不切实际,并且一致性,我个人建议反对那种在线声明&amp;分配
答案 3 :(得分:0)
Dim x, y as Date
'Is the same as:
Dim x as Variant
Dim y as Date
现在
Dim x as Date, y as Date
'Is the same as:
Dim x as Date
Dim y as Date
如果不为 VBA 变量声明数据类型,VBA 使用 Variant(默认数据类型)