【问题标题】:How to set a series data with a variable in VBA (Excel)如何在 VBA (Excel) 中使用变量设置系列数据
【发布时间】:2021-04-19 09:20:00
【问题描述】:

我知道已经有一些关于此的主题,但我已经尝试了一些解决方案,但似乎没有任何效果,所以我将在这里碰碰运气。

我正在尝试通过变量从图表中设置系列数据。如果我不使用变量,我有这样的东西:

   ActiveChart.FullSeriesCollection(1).XValues = _
        "='sheetname_xpto'!$A$2:$A$" & lw

上面的代码有效。现在,我想用一个变量交换“sheetname_xpto”。所以我已经尝试了几个选项,例如:

Dim sname As String
sname = ActiveSheet.Name

    ActiveChart.FullSeriesCollection(1).Values = _
        "="sname"!"$C$2:$C$" & lw

 ActiveChart.FullSeriesCollection(1).Values = _
        "=Sheets(sname)!"$C$2:$C$" & lw

 ActiveChart.FullSeriesCollection(1).Values = _
        "='&sname&'!"$C$2:$C$" & lw

还有很多其他的。 所有这些,当通过语法测试时,只需将“名称”放在系列数据值上,而不是工作表的实际名称。有人可以帮我吗?

【问题讨论】:

    标签: excel vba charts series


    【解决方案1】:

    您必须区分在 VBA 中执行的部分和在 Excel 中执行的公式。对于 VBA,您的公式只是一个字符串。

    VBA 运行时将引号之间的所有内容视为字符串的一部分。如果找到变量或函数名或其他任何内容,它将不会查看字符串。另一方面,Excel 对 VBA 中使用的变量一无所知,因此无法读取内容。

    如果您需要将变量的内容作为字符串的一部分,请使用字符串连接(您已经为变量 lw 这样做了)。

    ActiveChart.FullSeriesCollection(1).Values = "=" & sname & "!$C$2:$C$" & lw
    

    在处理 VBA 中的公式时,我强烈建议您将公式写入中间变量 - 如果出现问题,使用调试器很容易检查该变量的内容

    Dim formula As String
    formula = "=" & sname & "!$C$2:$C$" & lw
    ActiveChart.FullSeriesCollection(1).Values = formula
    

    【讨论】:

    • 感谢您的回答,但没有奏效。它会引发错误“应用程序定义或对象定义错误”。
    • 成功了。它缺少额外的 '。像这样添加 ' 后:"='" & sname & "'!$C$2:$C$" & lw 它起作用了
    猜你喜欢
    • 2011-08-08
    • 2016-08-30
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多