天天看点

Excel VBA条件编译语句

作者:iamlaosong

我的一个工具只能在32位环境下使用,因为64位环境下API声明略有不同。为了工具的兼容性,可以采用条件编译#If…Then…#Else语句。注意,没有“#”号的是正常条件语句,有“#”号的是条件编译语句。条件编译语句中的条件判断会用到编译常数,除了系统自带的外,也可以自己用#const定义。

1、常数定义语句:

Excel VBA条件编译语句

2、条件编译语句:

Excel VBA条件编译语句

3、测试代码:

Sub ttt()
    #If VBA7 Then
        MsgBox "VBA7"
        #If Win64 Then
            MsgBox "win64"
        #Else
            MsgBox "win32"
        #End If
    #Else
        MsgBox "vba6"
    #End If
    
End Sub
           

之所以用条件编译,是因为一个环境下的语句在另一个环境下可能会报错,用条件编译就没这个问题了。下面的框架就是用来判断环境是否为VBA7和Win64环境,如果是,API声明前面加上PtrSafe关键字。

 #If VBA7 And Win64 Then

Declare PtrSafe Function ......

......

#Else

Declare Function ......

......

#End If

参见:VBA7的诞生-VBA将会继续存活下去