我知道我可以在 VBA 中使用条件编译来区分 64 位和 32 位版本(使用#If VBA7 Then ...
)。
是否还有一个类似的内置常量,Application.Version
以便我可以在编译时区分 Excel 2013/2010/2007/... 等?
此外,是否有可用的现有编译器常量列表?到目前为止,我找到了VBA7
和Win64
(例如,从这篇文章中)——但还有其他的吗?
我知道我可以在 VBA 中使用条件编译来区分 64 位和 32 位版本(使用#If VBA7 Then ...
)。
是否还有一个类似的内置常量,Application.Version
以便我可以在编译时区分 Excel 2013/2010/2007/... 等?
此外,是否有可用的现有编译器常量列表?到目前为止,我找到了VBA7
和Win64
(例如,从这篇文章中)——但还有其他的吗?
从此链接中,您有以下常量:
VBA6
VBA7
Win64
Win32
Win16
Mac
不是问题的版本粒度,但我需要将 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 代码。我不知道为什么,但这就是它的测试方式。