excel - 将系列动态添加到图表
问题描述
我正在尝试创建一个 Excel,它使用几个数据验证切换列表和一个按钮,允许用户显示模型构建特定阶段的特定图。为此,我需要能够将系列动态添加到图表中。我在网上找到了很多关于这方面的材料,但尽管我尽了最大的努力,我还是无法让我的脚本正常工作。if 条件中的行似乎总是生成以下错误“运行时错误'1004':应用程序定义的或对象定义的错误”。任何帮助将不胜感激。
Sub UpdateChart()
'declaring variables'
Dim chrt As ChartObject
Dim chrtsercoll As SeriesCollection
Dim chtser As Series
'create the series collection from the chart'
Set chrt = ActiveSheet.ChartObjects(1)
'Get the series collection from the chart'
Set chrtsercoll = chrt.Chart.SeriesCollection
'delete all existing series in chart'
For Each chtser In chrtsercoll
chtser.Delete
Next chtser
'set up series in case of residual plot'
If Range("C21").Value = "residual series" Then
With chrtsercoll.NewSeries()
.Name = "=" & ActiveSheet.Name & "!B15"
.Values = "=" & ActiveSheet.Name & "!" & Evaluate(ActiveSheet.Names("RSr").Value)
End With
ActiveSheet.ChartObjects(1).Chart.ChartType = xlLine
End If
End Sub
解决方案
像这样的东西应该工作。
- 始终使用工作表限定范围引用等
- 如果工作表名称有空格,请在范围引用中使用工作表名称周围的引号
- 您没有为该系列分配任何内容
XValues
- 不清楚是否有任何问题
Evaluate(ActiveSheet.Names("RSr").Value)
- 也许你可以解释你在那里做什么?
Sub UpdateChart()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.ChartObjects(1).Chart
'remove existing data
Do While .SeriesCollection.Count > 0
.SeriesCollection(1).Delete
Loop
'set up series in case of residual plot'
If ws.Range("C21").Value = "residual series" Then
With .SeriesCollection.NewSeries
.Name = "='" & ws.Name & "'!B15" 'use quotes in case name has spaces
.XValues = 1 'you need to add something here....
.Values = "='" & ws.Name & "'!" & Evaluate(ActiveSheet.Names("RSr").Value)
End With
.ChartType = xlLine
End If
End With
End Sub
推荐阅读
- python - 如何修复 ImportError:导入 _hello 时 DLL 加载失败:找不到指定的模块。使用 SWIG 时
- python - 联合 IBMid SSO 绕过一次
- angular - 无法理解地图在 Angular 中的工作原理
- python - 如何计算熊猫数据框中每个行子集的移动平均值?
- latex - 将多个作者添加到 IEEEcsmag 乳胶模板中的两列
- spring - 引起:javax.net.ssl.SSLHandshakeException: PKIX 路径构建 [Spring boot 项目]
- bash - 如何通过脚本的参数指定 wget 范围?
- node.js - NPM 未启动
- core-data - CoreData 模型架构和关系
- ruby - 如何测试具有本地 GEM 依赖项的 GEM,$LOADED_FEATURES 未指向我的本地 GEM