【问题标题】:VBA Combine integer with chart loop iterationVBA将整数与图表循环迭代结合起来
【发布时间】:2018-05-01 10:30:02
【问题描述】:

我希望根据一组动态 xy 变量更改一系列条形图的格式。我设法设置了一个正确格式化单个图表的循环 - 选择包含数据的正确列,然后修改选择以便省略任何空行。

我现在要做的是创建一个循环,将正确的格式应用于嵌入在工作表中的 13 个图表中的每一个。每个图表将读取其自己的一组三列(X 变量和 2 x Y 变量),其中包含因图表而异的数据范围。我的目标是使用 range.offset 和一个整数变量(下面的代码中的j2)来执行此操作,该变量随着每次迭代而增加,以便在循环的每次迭代中将列引用向右移动一个。

我将需要此变量与图表循环同时循环 - 是否可以从先前在循环中激活的图表数或已通过的迭代次数中派生变量?

有问题的行是下面代码中的'j2 = j1 +(现已删除)。

****我现在已经解决了这个问题,主要是通过添加一个简单的计数器 (j1) 并在循环结构中移动 lastrow 变量。完整代码如下:****

    Sub ModifyChart()
Dim AllCatRange As Range
Dim lastRow As Long
Dim iLoop As Long
Dim PlotSerRange As Range
Dim PlotSer2Range As Range
Dim PlotCatRange As Range
Dim ws As Worksheet
Dim objCht As ChartObject
Dim j1 As Integer

Set ws = Worksheets("Indicator Summary")
j1 = -3

 With ws
     For Each objCht In ws.ChartObjects
        lastRow = 5
        j1 = j1 + 3
        Set AllCatRange = Worksheets("Indicator Summary").Range("J6:J50").Offset(0, j1)

        For iLoop = 1 To 45
            If AllCatRange.Cells(iLoop, 1) <> "" Then
            lastRow = lastRow + 1
            End If
        Next iLoop

        Set PlotCatRange = .Range("J6:J" & lastRow).Offset(0, j1)
        Set PlotSerRange = .Range("K6:K" & lastRow).Offset(0, j1)
        Set PlotSer2Range = .Range("L6:L" & lastRow).Offset(0, j1)

        With objCht
        .Chart.SeriesCollection(1).XValues = "=" & PlotCatRange.Address(False, False, xlA1, xlExternal)
        .Chart.SeriesCollection(1).Values = "=" & PlotSerRange.Address(False, False, xlA1, xlExternal)
        .Chart.SeriesCollection(2).XValues = "=" & PlotCatRange.Address(False, False, xlA1, xlExternal)
        .Chart.SeriesCollection(2).Values = "=" & PlotSer2Range.Address(False, False, xlA1, xlExternal)

        Set AllCatRange = Nothing
        Set PlotCatRange = Nothing
        Set PlotSerRange = Nothing
        Set PlotSer2Range = Nothing

        End With

    Next objCht
    End With

End Sub

谢谢,蚂蚁

【问题讨论】:

  • 请显示 1 个图表的运行代码并删除您发布的代码中的“Next j”。
  • @hornetbzz 我删除了“下一个 j”行。关于单个图表的运行代码 - 它只是上面的代码,没有每个循环的 objCht。或者,它正是上面的代码,工作表中只有 1 个图表。

标签: vba loops charts offset


【解决方案1】:

在正文中编辑提供了答案和正确的代码

【讨论】:

    猜你喜欢
    • 2021-12-22
    • 2017-04-08
    • 2014-09-17
    • 2020-11-07
    • 1970-01-01
    • 2012-09-16
    • 2023-03-22
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多