使用" Dim"是否无用如果我不写一个"作为某种东西,那就宣布一个变量。之后呢?

时间:2016-02-16 14:37:51

标签: vba excel-vba excel

例如,以下两个代码是否相同?如果我不编写例如"作为整数"是不必使用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

2 个答案:

答案 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

突然之间你正在浏览代码行,试图找出你为什么会得到意想不到的结果。

要安全

  1. 使用Option Explicit
  2. 声明所有变量As各自的数据类型或对象。这也带来了
  3. 的额外好处

答案 1 :(得分:1)

良好的编码习惯是声明变量及其类型。

使用&#34;选项明确&#34;在模块的开头强制执行此操作。

任何未明确声明的内容都由系统声明为类型变体。这效率较低。

从代码维护的角度来看,维护隐式代码比使用显式代码更难。 20年前,一个案例可以让您的代码变得更加聪明,并尽可能多地将计算结合在一条线上,但现在处理,存储和内存非常便宜,可维护性已经成为优先于效率的优先事项。 / p>

所以,它并非毫无用处,但如果其他人需要维护您的代码,可能会给您的团队带来困难。