Excel VBA條件編譯語句

作者:iamlaosong

我的一個工具只能在32位環境下使用,因爲64位環境下API聲明略有不同。爲了工具的兼容性,可以採用條件編譯#If…Then…#Else語句。注意,沒有“#”號的是正常條件語句,有“#”號的是條件編譯語句。條件編譯語句中的條件判斷會用到編譯常數,除了系統自帶的外,也可以自己用#const定義。

1、常數定義語句:

2、條件編譯語句:

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將會繼續存活下去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章