【问题标题】:Series name empty after setting it in excel vba在excel vba中设置后系列名称为空
【发布时间】:2021-08-30 09:02:52
【问题描述】:

在 Excel 图表表中设置系列名称后

ActiveChart.SeriesCollection(1).Name = dat.Cells(1, 2)

图表图例显示了引用单元格的当前值,但“编辑系列”对话框中的“系列名称”字段为空。对单元格值的更改不会显示在图表图例中。

关于如何正确设置系列名称的任何建议?

【问题讨论】:

  • 工作表没有SeriesCollection-property。 dat 是什么?你在使用Option Explicit 吗?你的代码有On Error Resume Next- 语句吗?
  • 可能需要使用对公式样式的单元格的引用来设置..."='Daten UVNIR'!A2"
  • @FunThomas 对不起,我的错。它是 ActiveChart ofc。
  • @BigBen 感谢您的评论!这解决了它。如果您添加如何轻松地将单元格公式转换为字符串,我很乐意接受它作为答案。我试过"= " & CStr(dat.Cells(1,2).Formula),但没有成功。
  • 我不确定您为什么要尝试使用对单元格公式的引用。您需要对单元格本身的引用。

标签: excel vba charts series


【解决方案1】:

假设dat 是一个指向您的数据表的工作表变量:

Dim nameFormula As String
nameFormula = = "=" & "'" & dat.Name & "'" & "!" & "$B$1"
ActiveChart.SeriesCollection(1).Name = nameFormula 

nameFormula 现在将包含"='Daten UVNIR'!$B$1"。这样,系列的名称设置为单元格 B1 而不是固定字符串(我总是建议使用中间变量,它有助于调试)。


我强烈建议不要使用ActiveChart。相反,使用类似的东西

Dim co As ChartObject, ch As Chart, ser As Series
Set co = dat.ChartObjects(1)
Set ch = co.Chart
Set ser = ch.SeriesCollection(1)
(...)
ser.Name = nameFormula

(可以使用 ChartObject 的 name 代替 1 作为索引)

更新:没有注意到您正在使用图表工作表。在这种情况下,使用

Dim ser As Series
set ser = Sheets("Chart1").SeriesCollection(1)

【讨论】:

  • @BigBen:你是对的。更新了答案
【解决方案2】:

试试这个代码:

ThisWorkbook.Sheets("Chart1").SeriesCollection(1).Name = "=" & dat.Cells(1, 2).Address(External:=True)

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多