我知道我可以在VBA中使用条件编译来区分64位和32位版本(使用#If VBA7 Then ...
)。
是否还有一个类似于Application.Version
的常量构建,以便我可以在编译时区分Excel 2013/2010/2007 / ...等等。
此外,是否有可用的现有编译器常量列表?到目前为止,我发现VBA7
和Win64
(例如来自this文章) - 但是还有其他的吗?
答案 0 :(得分:5)
从this link开始,您有以下常量:
VBA6
VBA7
Win64
Win32
Win16
Mac
答案 1 :(得分: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 代码。我不知道为什么,但它就是这样测试的。