Excel VBA:为什么没有添加任何后续系列?

2024-04-05

我试图将大约 200 个系列绘制到一个图表上,并尝试使用 for 循环为我绘制所有系列,但是,当我运行以下代码时,只有第一个系列(不在 for 循环中)实际上进入了图表。 for 循环生成的所有其他内容都没有显示,我不知道为什么......

Sub Macro3()

    Dim r As Integer
    Dim cellName As String
    Dim first As String
    Dim second As String
    Dim newCell As String
    Dim xAxis As String
    Dim i As Integer

    xAxis = "=Compilation!A7:A7507"
    originCell = "=Compilation!B7:B7507"

    ActiveSheet.ChartObjects(1).Activate
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = Range(xAxis)
    ActiveChart.SeriesCollection(1).Values = Range(originCell)

    For i = 2 To 200
        ' Incriment the columns
        first = InStr(originCell, "!")
        second = InStr(first + 1, originCell, ":")

        cellName = Mid(originCell, first + 1, second - first - 1)
        r = Range(cellName).Column + 1

        newCell = Replace(originCell, cellName, cellS(7, r).Address(RowAbsolute:=False, ColumnAbsolute:=False))

        If (cellS(7, r - 1).Value = "YES") Then
            ActiveChart.SeriesCollection.NewSeries
            ActiveChart.SeriesCollection(i).XValues = Range(xAxis)
            ActiveChart.SeriesCollection(i).Values = Range(newCell)
        End If

        originCell = newCell
        MsgBox (i & ", " & xAxis & ", " & newCell)
    Next i


End Sub

任何见解将不胜感激!提前致谢!


从您的代码中,我相信您想要绘制垂直而不是水平的数据系列,并且具有非常误导性的变量名称 - 使用r for Columns.

首先,去掉等号Range() to work

xAxis = "Compilation!A7:A7507"
originCell = "Compilation!B7:B7507"

然后,您不断向图表中添加系列,无论其中有多少。

下一个问题是ActiveChart.SeriesCollection(i)不应该涉及到i,因为您只想添加“是”。

假设第 7 行中的单元格可能等于“YES”,下面的代码应该适合您。如果为“是”,则其下方的数据将添加到图表中(不应像您所做的那样包含其自身)。如果 Activesheet 中没有图表,也会处理。在添加“是”系列之前,它将删除图表中的所有旧系列。

评论出我的测试数据行并取消注释实际数据:

Sub AddDataToChart1()
    Const YesNoRow As Long = 7 ' Yes/No should not be plotted in the chart
    Const xAxis As String = "Compilation!A8:A13" ' TEST DATA
    'Const xAxis As String = "Compilation!A8:A7507" ' ACTUAL DATA

    Dim oRngAxis As Range, oCht As Chart
    Dim i As Long ' Offset counter
    Dim n As Long ' Number of data series in chart

    On Error Resume Next
    ' Check if existing chart available
    Set oCht = ActiveSheet.ChartObjects(1).Chart
    If oCht Is Nothing Then Set oCht = ActiveSheet.Shapes.AddChart.Chart
    On Error GoTo 0
    ' Chart Object valid, add series
    If Not oCht Is Nothing Then
        Set oRngAxis = Range(xAxis)
        With oCht
            ' Remove previous data
            For i = .SeriesCollection.Count To 1 Step -1
                .SeriesCollection(i).Delete
            Next
            n = 0
            For i = 1 To 200
                If UCase(oRngAxis.Worksheet.Cells(YesNoRow, oRngAxis.Column + i).Value) = "YES" Then
                    n = n + 1
                    If n > .SeriesCollection.Count Then
                        .SeriesCollection.NewSeries
                    End If
                    .SeriesCollection(n).XValues = oRngAxis
                    .SeriesCollection(n).Values = oRngAxis.Offset(0, i)
                    .SeriesCollection(n).Name = "Col " & Split(oRngAxis.Offset(0, i).Address, "$")(1)
                End If
            Next i
        End With
        Set oCht = Nothing
        Set oRngAxis = Nothing
    End If
End Sub

样本数据和输出:

UPDATE:

将以下代码添加到编译表中,以便每当第 7 行中的单元格发生更改时,它都会立即更新图表!您也可以将子 AddDataToChart1 移动到那里:

Private Sub Worksheet_Change(ByVal oRng As Range)
    If Not Intersect(oRng, Rows(7)) Is Nothing Then AddDataToChart1
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel VBA:为什么没有添加任何后续系列? 的相关文章

  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • Excels COUNTIFS 函数中的数组作为条件,混合 AND 和 OR [重复]

    这个问题在这里已经有答案了 我已经在谷歌上搜索了一段时间 但似乎无法让它发挥作用 我使用 Excel 2010 希望混合使用 AND 和 OR 运算符来计算行数 我想做的是这样的 COUNTIFS A A string1 B B strin
  • 当使用公式生成超链接时,VBA 打开 Excel 超链接不起作用

    使用公式生成的 Excel 超链接似乎存在错误 我使用的是 Excel 2010 我有一个电子表格 其中的单元格包含 URL 我的目标是执行以下两件事 将这些单元格变成超链接 创建一个键盘快捷键来打开这些超链接 这样我就不必使用鼠标了 为了
  • 在 Node.js 中解析 Json(带有数组和对象)并将数据导出到 Excel 文件中

    我是 Node js 新手 我的要求是 我需要解析 JSON 并将数据导出到 Excel 文件中 其中包含 JSON 中的所有字段 我的 JSON 如下 id 1255 title The Brain and Nervous System
  • SpreadsheetML 文件扩展名被 IE 和 FF 更改 - 内容类型错误?

    我正在 PHP 中生成 SpreadsheetML 文件 当用户下载文件并保存时 默认情况下文件会另存为 Report xml 并在 Excel 中打开 但是 如果选择在 Excel 中打开文件而不是保存文件 则文件名将更改为 Report
  • Java Microsoft Excel API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用自定义功能区时是否可以阻止 MS Access 自动更改选定的功能区选项卡?

    当使用自定义 UI XML 文件在 Access 中添加多个自定义功能区选项卡时 每当关闭窗体时 选定的功能区选项卡都会变回第一个自定义选项卡 我们从 VBA 以编程方式加载自定义功能区 我已经创建了重现问题的 accdb http sdr
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 使用宏打开受信任文档或启用宏时 Excel 崩溃

    正如标题所示 我无法使用宏打开受信任的文档 Excel 立即崩溃 制作文档的副本允许其打开 因为该副本不受信任 并且我可以检查 VB 编辑器中的宏 但启用宏会导致另一次崩溃 为什么会发生这种情况以及我可以采取什么措施来解决它 我今天遇到了类
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • VBA 架构技巧 - 宏封装

    我拼凑了 Excel 的概念证明 以从数据库获取数据 并需要将其打包 以便可以将其分发给我们的客户 我的第一次尝试只是将所有代码放入代码模块中 但随后在 Excel 中我可以看到宏列表中的所有模块 而我实际上只想要列表中的主要模块 我猜想我
  • Powershell - 在不安装 Excel 的情况下将 CSV 转换为 XLS

    我有一台自动生成报告的服务器 报告采用 CSV 格式 我需要能够直接加密文件 无需第三方压缩 无 WinZIP 或 WinRAR 我认为最好的想法是将 CSV 转换为 XLS 然后通过 Powershell 密码保护 XLS 文件 不幸的是
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 在 powershell 中打开 Excel 时出错

    我需要用以下命令打开 Excel 文件CorruptLoad来自 powershell 脚本的参数 但是当我尝试做到这一点时 出现错误Exception calling Open with 15 argument s open method
  • 如何隐藏组合框下拉列表中的列?

    我正在 Excel 用户窗体中构建一个 ComboBox 该用户窗体从 Access 表中获取其行 我想在下拉列表中向用户显示多个文本字段 但从 ComboBox 返回的值应该是与用户选择的行关联的 ID 号 即 ID 列是绑定列 但我不想
  • 将用户定义的表类型从 VBA 传递到 SQL

    我的任务是创建一个 Excel 电子表格作为 SQL 数据库的前端 以及一些对数据执行复杂计算的 C 我的老板想要前端作为电子表格 而计算对于 VBA 来说似乎太复杂了 目前 检索数据集的存储过程运行良好 然后 用户将在 Excel 中编辑
  • 在用户窗体终止/关闭 VBA 时调用数组

    我有一个问题 我想在用户窗体关闭时将用户窗体的内容存储在数组中 我认为我的语法正确 但似乎不会在用户窗体初始化时重新填充 我尝试将数组放入其自己的模块中 但这也不起作用 有人愿意启发我吗 示例代码 Public Sub DPArrayStu
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell

随机推荐