VBA在"if ... else"中重复声明

use*_*244 3 vba

简单如下:

If 1 = 2 Then
    Dim i As Integer  
Else
    Dim i As Integer
End If
Run Code Online (Sandbox Code Playgroud)

这将给出错误"当前范围内的重复声明".为什么?

AMi*_*ico 8

变量是子/函数(过程)的本地变量.在您的情况下,"当前范围".VB,VBA和VBScript在过程中没有代码块的概念.如果我没记错的话,唯一的代码块是模块,类,表单(类)和过程.

为方便起见,您可以在过程中的任何位置声明变量.然而,"当前范围"是程序.

设计决策使语言更容易用于B -eginners.


当前范围内的重复声明

指定的名称已在此范围内使用.例如,如果两个变量在不同的过程中定义,则它们可以具有相同的名称,但如果它们是在同一过程中定义的则不是.

插入自http://msdn.microsoft.com/en-us/library/gg251613.aspx