vba - 无法在 Excel 2007 VBA 中使用 Option Strict Off 进行后期绑定(bind)

标签 vba excel

我正在编写一些旨在与 Excel 2007 和更新版本兼容的 VBA 代码。从 Excel 2013 开始,图表系列过滤选项和相关的 Chart.FullSeriesCollection对象被引入,我在我的代码中包含了 If语句来选择这个对象或旧的 .SeriesCollection一个取决于 Excel 版本。

但是,VBA 无法编译 Excel 2007 中的代码,因为 .FullSeriesCollection没有定义。我想尝试后期绑定(bind),以便编译器跳过 If包含该 undefined object 的语句,但 Excel 2007(使用 VBA 版本 6.3)无法识别 Option Strict Off要么行;我只能选择Base , Compare , ExplicitPrivate关注Option陈述。

如何让较旧的 VBA 编译器跳过 .FullSeriesCollection 所在的行用来?我已经学习 VBA 3 天了,如果这非常明显,请原谅。

我的代码的相关部分:

Private Sub EventChart_MouseDown(ByVal Button As Long, _
    ByVal Shift As Long, _
    ByVal x As Long, _
    ByVal y As Long)

Dim ElementID As Long, Arg1 As Long, Arg2 As Long, Arg1b As Long
Dim myX As Variant, myY As Double
Dim xlVrsion As Integer, verSerColl As Object

xlVrsion = CInt(Left(Application.Version, 2)) 'Get Excel version and convert to an integer (2007 = 13.0; 2010 = 14.0; 2013 = 15.0; 2016 = 16.0)

With ActiveChart
    .GetChartElement x, y, ElementID, Arg1, Arg2

If ElementID = xlSeries Then 
  If xlVrsion >= 15 Then     'Check if Excel version is equal or newer than 2013.
    Set verSerColl = .FullSeriesCollection(Arg1)
  Else
    Set verSerColl = .SeriesCollection(Arg1)
  End If

'[More irrelevant code]

最佳答案

您可能可以使用 compiler constants

#If VBA7 Then     'Check if Excel version is equal or newer than 2013.
    Set verSerColl = .FullSeriesCollection(Arg1)
#Else
    Set verSerColl = .SeriesCollection(Arg1)
#End If

关于vba - 无法在 Excel 2007 VBA 中使用 Option Strict Off 进行后期绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43944928/

相关文章:

mysql - Maya 和数据库

python - Openpyxl 无法读取 xlsx 文件,但如果我保存文件,它会打开

ms-access - 是否可以将字符串转换为对象引用?

excel - 如何在 Outlook 2007 中为 VBA 宏指定键盘快捷键?

vba - 导入不带格式的 CSV

隐藏行后,VBA 代码停止执行,没有错误

vba - 如何更新/更改所有条件规则范围的最后一行

vba - 根据事件组合框中的选择生成图表

VBA - 图表的多个系列

VBA 展望。尝试从电子邮件正文中提取特定数据并导出到 Excel