【问题标题】:Multiple Chart Creation Series Overload多图表创建系列重载
【发布时间】:2018-04-17 14:56:37
【问题描述】:

我在使用大量数据创建多个图表时遇到了问题。我需要创建 4 个单独的图表。成功创建第一个图表后,我的下一个图表的代码是相似的,但代码在以下图表中产生了数量惊人的系列。我的第 2 个图表共有 6 个系列,第 3 个图表有 33 个系列,第 4 个有 48 个。在每个图表的数据选择中,B 列是我的日期,然后第二个范围是我的数据,但在我的 2-4图表代码开始选择我没有指定的列。我该如何解决/解决这个问题?

我的 Sub 用于创建这些图表:

Sub ChartC()


Dim EmbChart As Chart, EmbChart1 As Chart, EmbChart2 As Chart, EmbChart3 As 
Chart
Dim cht As Object
Dim wks As Worksheet
Dim LastRow As Long

For Each wks In Worksheets

If wks.ChartObjects.Count > 0 Then
  wks.ChartObjects.Delete
End If
Next wks


With Application.ActiveSheet
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With


'Cement Inventory Graph
Set EmbChart = ActiveSheet.Shapes.AddChart(Left:=2760, Width:=1000, 
Top:=150, Height:=400).Chart


With EmbChart
    .SetSourceData Source:=Sheets("TestSheet_Const_Ktonnage").Range("B5:C" & LastRow)
    .Type = xlLine
    .HasTitle = True
    .ChartTitle.Text = "Year Overview of Total Cement Inventory"
    .SeriesCollection(1).Name = "Total Cement Inventory"
End With


'Clinker Inventory Graph
Set EmbChart1 = ActiveSheet.Shapes.AddChart(Left:=2760, Width:=1000, Top:=650, Height:=400).Chart


With EmbChart1
    .SetSourceData Source:=Range("B5:B" & LastRow, "H5:H" & LastRow)
    .Type = xlLine
    .HasTitle = True
    .ChartTitle.Text = "Year Overview of Clinker Inventory"
End With


'Operational Efficiency Kiln1
 Set EmbChart2 = ActiveSheet.Shapes.AddChart(Left:=2760, Width:=1000, Top:=1150, Height:=400).Chart


With EmbChart2
    .SetSourceData Source:=Range("B5:B" & LastRow, "AI5:AI" & LastRow)
    .Type = xlLine
    .HasTitle = True
    .ChartTitle.Text = "Year Overview of Operational Efficiency For Kiln1"
End With


'Operational Efficiency Kiln2
Set EmbChart3 = ActiveSheet.Shapes.AddChart(Left:=2760, Width:=1000, Top:=1650, Height:=400).Chart


With EmbChart3
    .SetSourceData Source:=Range("B5:B" & LastRow, "AX5:AX" & LastRow)
    .Type = xlLine
    .HasTitle = True
    .ChartTitle.Text = "Year Overview of Clinker Inventory"
End With

End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您使用逗号分隔的范围对不相邻的列进行编程。因此,不要给 Range 两个参数,而是给它一个逗号分隔的范围参数:

    Source:=Range("B5:B" & LastRow & "," & "AI5:AI" & LastRow)
    

    所以如果 LastRow 是 150,这会减少到

    Source:=Range("B5:B150,AI5:AI150")
    

    希望有帮助

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-23
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多