5

我知道我可以在 VBA 中使用条件编译来区分 64 位和 32 位版本(使用#If VBA7 Then ...)。

是否还有一个类似的内置常量,Application.Version以便我可以在编译时区分 Excel 2013/2010/2007/... 等?

此外,是否有可用的现有编译器常量列表?到目前为止,我找到了VBA7Win64(例如,从这篇文章中)——但还有其他的吗?

4

2 回答 2

5

从此链接中,您有以下常量:

VBA6
VBA7
Win64
Win32
Win16
Mac
于 2013-01-29T10:53:39.530 回答
1

不是问题的版本粒度,但我需要将 Office 365/XL16 特定代码与其前身分开。VBA7向后兼容VBA6,而VBA6对VBA7一无所知。我们可以利用它来发挥我们的优势。

Sub testit()
#If VBA6 And VBA7 Then
   Debug.Print "Cool!" 'XL16 vba code
#Else
   Debug.Print "Yeah!" 'Not XL16 vba code
#End If
End Sub

XL14 及以下评估#If 为真/假,XL16 为真/真。如果只是#If VBA7,XL14 会尝试编译XL16 代码。我不知道为什么,但这就是它的测试方式。

于 2021-04-02T19:37:19.930 回答