如果我之后没有写"as something",那么使用"Dim"声明一个变量是没用的吗?

Lan*_*nza 5 excel vba excel-vba

例如,以下两个代码是否相同?如果我之后不写"为整数",是否没有必要使用Dim?

Sub something()

MyNumber = 10

Worksheets(1).Range("A1") = MyNumber

End Sub
Run Code Online (Sandbox Code Playgroud)

Sub something()

Dim MyNumber

MyNumber = 10

Worksheets(1).Range("A1") = MyNumber

End Sub
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 17

如果你变暗了一个变量,你让编译器知道你计划在使用该变量之前使用一定量的内存.在现代机器上的大多数VBA程序中,这不会产生巨大的性能优势,但被广泛认为是最佳实践.

其被认为是最佳实践的原因之一是VBE中的自动大写功能可以帮助您进行编码和调试以发现任何问题.

如果为变量标注尺寸,请执行以下操作:

Dim hWnd

hWnd = 1234
'// some more code....
hwnd = 2345
Run Code Online (Sandbox Code Playgroud)

VBE会自动w将变量名称大写并将其更改为hWnd- 这可以作为一个小小的保证,您已经获得了正确的变量并且没有创建拼写错误.


如果不对变量进行标注,则很容易发现自己处于这种情况:

hWnd = 1234
'// some code here
hwnd = 2345
Run Code Online (Sandbox Code Playgroud)

这种情况下,VBE将真正改变的第一次出现hWndhwnd.然后我们继续创建一个错字,hnwd现在我们的代码如下所示:

hwnd = 1234
'// code here
hwnd = 2345
'// code here
hnwd = 3456
Run Code Online (Sandbox Code Playgroud)

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


要安全

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