Excel VBA编程 条件编译语句
使用条件编译语句,即使用条件编译指令,它是一种特殊的表达式。使用条件编译指令应首先使用#Const指令声明一个逻辑常量,然后在程序中使用#If…Then…#Else指令检查常量,根据常量的值决定应该编译哪部分代码。 1.#Const语句
该指令用来定义VBA的条件编译常数。 语法:#Const constname = expression
其中,#Const 编译指令的语法具有以下几个部分:
constname 表示一个常数;其参数的名称要遵守变量命名的约定。
expression 表示文字、其他的条件编译常数或包含除了Is以外的算术或逻辑运算符的任意组合。
例如,下面的实例使用#Const指令声明条件式编译器常数,以便在#If…#Else…#End If构造
中使用。
#Const DebugVersion = 1 'DebugVersion常数在#If块中计为True。 在条件编译的使用过程中,应注意以下几点内容:
条件编译常数在其出现的模块中总是Private。不可能利用#Const指令建立Public编译常数。 在expression中只能使用编译常数及文字。使用一个用Const定义的标准常数,或者使用一个未定义的常数,都会导致错误发生。反之,用#Const关键字定义的常数也只能用于条件编译。
不管条件编译常数在程序中的位置如何,都总是在模块级别中进行计算。
2.#If…Then…#Else语句
#If…Then…#Else指令用于条件编译已选择的VBA代码块中。 语法:
#If expression Then statements
[#ElseIf expression-n Then [elseifstatements]] [#Else
[elsestatements]] #End If
其中,#If…Then…#Else 指令的语法具有以下几个部分的功能:
expression 必要参数,表示包含一个或多个条件编译常数、文字与运算符的任何表达式,其值为True或False。
statements 必要参数。表示VBA程序行或编译指令,如果关联的表达式为True,则运行程序。 expression-n 可选参数。表示由一或多个条件编译常数、文字和运算符组成的任何一个表达式,
其值为True或False。
Elseifstatements 可选参数。表示一个或多个程序行或编译命令,如果expression-n 为True,则运行程序。
elsestatements 可选参数。表示一个或多个程序行或编译命令,如果以前的expression或expression-n中没有一个为True,则运行程序。
例如,使用#If…Then…#Else构造中引用条件式编译器常数,来决定编译哪部分语句。 ' 如果Mac常数为true,则编译#If后面的语句。 #If Mac Then
' 否则,如果是32位窗口程序,则编译这个语句 #ElseIf Win32 Then
' 再否则,则编译以下语句 #Else
Win16 #End If
在#If…Then…#Else指令的使用过程中,应注意以下几点内容:
#If…Then…#Else指令的作用与If…Then…Else语句相同,其差异在于#If、#Else、#ElseIf,及#End If指令没有单独成行的形式,也就是说,在指令所在的那一行,不能有其他代码出现。
条件编译通常用来编译不同平台上的同一个程序。也可以用来避免调试程序代码出现在可执行程序中。条件编译时被排除的程序代码在最后的可执行文件中被完全略去,所以不会对程序的大小或功能有任何影响。
无论结果如何,都要计算所有表达式。所以,在表达式中用到的所有常数都必须加以定义,任何未定义的常数都会被当作Empty来计算取值。
Option Compare语句不会影响#If及#ElseIf语句中的表达式。条件编译指令中的表达式总是用Option Compare Text计算值。其中,Option Compare语句用于声明字符串比较时所用的缺省比较方法。