例如,以下两个代码是否相同?如果我不编写例如"作为整数"是不必使用Dim。那之后呢?
Sub something()
MyNumber = 10
Worksheets(1).Range("A1") = MyNumber
End Sub
和
Sub something()
Dim MyNumber
MyNumber = 10
Worksheets(1).Range("A1") = MyNumber
End Sub
答案 0 :(得分:17)
如果您 Dim 确定一个变量,您可以让编译器知道您计划使用该变量的一定数量的内存 。在现代机器上的大多数VBA程序中,这不会产生巨大的性能优势,但被广泛认为是最佳实践。
它被认为是最佳实践的原因之一是VBE中的自动大写功能,它可以帮助您进行编码和调试以发现任何问题。
如果您对变量进行尺寸标注,请执行以下操作:
Dim hWnd
hWnd = 1234
'// some more code....
hwnd = 2345
VBE会自动将变量名中的w
大写并将其更改为hWnd
- 这可以作为一个小小的保证,即您拥有正确的变量而不会产生拼写错误。< / p>
如果您 不 维度变量,您很容易发现自己处于这种情况:
hWnd = 1234
'// some code here
hwnd = 2345
在此方案中,VBE实际上会将hWnd
的第一次出现更改为hwnd
。然后我们继续创建一个hnwd
的拼写错误,现在我们的代码看起来像这样:
hwnd = 1234
'// code here
hwnd = 2345
'// code here
hnwd = 3456
突然之间你正在浏览代码行,试图找出你为什么会得到意想不到的结果。
要安全
Option Explicit
As
各自的数据类型或对象。这也带来了intellisense 答案 1 :(得分:1)
良好的编码习惯是声明变量及其类型。
使用&#34;选项明确&#34;在模块的开头强制执行此操作。
任何未明确声明的内容都由系统声明为类型变体。这效率较低。
从代码维护的角度来看,维护隐式代码比使用显式代码更难。 20年前,一个案例可以让您的代码变得更加聪明,并尽可能多地将计算结合在一条线上,但现在处理,存储和内存非常便宜,可维护性已经成为优先于效率的优先事项。 / p>
所以,它并非毫无用处,但如果其他人需要维护您的代码,可能会给您的团队带来困难。