【发布时间】:2017-06-13 15:50:52
【问题描述】:
我有一个宏,在 Office 2010 和 Office 2016 之间的行为似乎不同,特别是“组合图表”功能。 (我们正处于 Office 2010 (Win7) 和 Office 2016 (Win10) 之间的过渡期)。
我想弄清楚的是如何在我们的宏中开发一个函数来“感知”用户是否在 2010 年或 2016 年(如果可能的话)打开宏并执行“创建图表”子
我在 2016 年最初开发宏时,这是创建组合图表的子。
'' Create ComboChart (Excel2016only)
'
Range("A1:C11").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("$A$1:$C$11")
ActiveChart.FullSeriesCollection(1).ChartType = xlColumnClustered
ActiveChart.FullSeriesCollection(1).AxisGroup = 1
ActiveChart.FullSeriesCollection(2).ChartType = xlLine
ActiveChart.FullSeriesCollection(2).AxisGroup = 1
ActiveChart.FullSeriesCollection(2).ChartType = xlLineMarkersStacked
ActiveChart.FullSeriesCollection(2).AxisGroup = 2
当 2010 用户尝试运行此程序时,它将在 .FullSeriesCollection(1).ChartType = xlColumnClustered 处出现“编译错误:找不到方法或数据成员”。我相信这是因为组合图表直到 2016 年才出现。
因此,我不得不手动记录宏步骤,以弄清楚如何在 2010 年做辅助轴,因为它不是原生的。
' ComboChartExcel2010 Macro
'
Range("A1:C11").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$C$11")
Application.WindowState = xlMaximized
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(2).Select
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).AxisGroup = 2
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).ChartType = xlLineMarkers
有什么建议可以开发一个可以根据用户正在运行的 Excel 版本运行任一子程序的例程吗?现在我必须有一个 UI 框,要求用户选择他们正在运行的那个。
【问题讨论】: