简体   繁体   English

如何使用 vba 创建多个图表

[英]how to create multiple charts with vba

I need some help.... I have this code in sheet1:我需要一些帮助....我在 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

And I need to add new charts in an other sheet, so I tried to use the same code:而且我需要在另一张表中添加新图表,所以我尝试使用相同的代码:

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

Is the same model of the tabel, but I need to put this in another sheet, here is my tabel:是同一个表的 model,但我需要把这个放在另一张表中,这是我的表:

数据

What I am doing wrong?我做错了什么? Thank you谢谢

When working with sheets it's always a good idea to create sheet variables, assign them to the sheets you're working with, and then use those variables instead of referring to sheets via their name, or "Select sheet >> ActiveSheet" etc使用工作表时,最好创建工作表变量,将它们分配给您正在使用的工作表,然后使用这些变量而不是通过它们的名称或“选择工作表 >> 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM