【问题标题】:how to create multiple charts with vba如何用vba创建多个图表
【发布时间】:2021-05-24 22:10:10
【问题描述】:

我需要一些帮助....我在 sheet1 中有这段代码:

Sheets("kips").Select

Dim i As Integer 'rows
Dim j As Integer 'columns

i = Cells(Rows.Count, 1).End(xlUp).Row

For j = 2 To 5
    With ActiveSheet.Shapes.AddChart.Chart
        .Parent.Name = "Chart_" & (j - 1)
        .ChartType = xlColumnClustered
        .SeriesCollection.NewSeries
        
    With .SeriesCollection(1)
        '.Name = "=" & ActiveSheet.Name & "!" & _
        'Cells(1, j).Address
        .XValues = "=" & ActiveSheet.Name & "!" & _
        Range(Cells(2, 1), Cells(i, 1)).Address
        .Values = "=" & ActiveSheet.Name & "!" & _
        Range(Cells(2, j), Cells(i, j)).Address
        
        End With
        
    End With
Next j

而且我需要在另一个工作表中添加新图表,所以我尝试使用相同的代码:

Sheets("sheet2").Select

Dim i As Integer 'rows
Dim j As Integer 'columns

i = Cells(Rows.Count, 1).End(xlUp).Row

For j = 2 To 5
    With ActiveSheet.Shapes.AddChart.Chart
        .Parent.Name = "Chart_" & (j - 1)
        .ChartType = xlColumnClustered
        .SeriesCollection.NewSeries
        
    With .SeriesCollection(1)
        '.Name = "=" & ActiveSheet.Name & "!" & _
        'Cells(1, j).Address
        .XValues = "=" & ActiveSheet.Name & "!" & _
        Range(Cells(2, 1), Cells(i, 1)).Address
        .Values = "=" & ActiveSheet.Name & "!" & _
        Range(Cells(2, j), Cells(i, j)).Address
        
        End With
        
    End With
Next j

是同一型号的表,但我需要把它放在另一张表中,这是我的表:

我做错了什么? 谢谢

【问题讨论】:

  • 小心使用.Select 作为工作表,然后使用Activesheet。选择工作表并不一定会使其处于活动状态。请改用Activate。作为替代方案,您根本不应该选择或激活工作表。为工作表创建一个变量对象并分配它:Dim ws As Worksheet; Set ws = ThisWorkbook.Sheets("kips")。然后使用对ws 的引用,您就可以保证您引用的是哪个工作表,这总是更安全。
  • 但是我如何引用 ws?因为我需要用这个表做 4 个图表,所以,我如何制作一个可以选择在 4 个图表中分隔这个 ws 的代码?

标签: excel vba graph charts


【解决方案1】:

使用工作表时,最好创建工作表变量,将它们分配给您正在使用的工作表,然后使用这些变量而不是通过它们的名称或“选择工作表 >> ActiveSheet”来引用工作表等等

Dim i As Long 'use Long
Dim j As Long
Dim wsCht As Worksheet, wsData As Worksheet

Set wsData = ActiveSheet
Set wsCht = ThisWorkbook.Sheets("Sheet2")

i = wsData.Cells(Rows.Count, 1).End(xlUp).Row

For j = 2 To 5
    With wsCht.Shapes.AddChart.Chart
        .Parent.Name = "Chart_" & (j - 1)
        .ChartType = xlColumnClustered
        .SeriesCollection.NewSeries
        
        With .SeriesCollection(1)
            '.Name = "=" & wsData.Name & "!" & wsdata.Cells(1, j).Address
            .XValues = "='" & wsData.Name & "'!" & _
                   wsData.Range(wsData.Cells(2, 1), wsData.Cells(i, 1)).Address
            .Values = "='" & wsData.Name & "'!" & _
                   wsData.Range(wsData.Cells(2, j), wsData.Cells(i, j)).Address
        
        End With
        
    End With
Next j

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多