使用VBA和子例程创build图表

我正在使用名为Team1-Team8的选项卡中的数据创build图表。 我正在为每个团队创build图表,但是我无法将图表分配到名为“Team a – Charts”的每个团队选项卡中。 下面是迄今为止,我只有Team A.My参数表中的代码,列B具有图表选项卡的名称,列A是团队名称。 任何指针都会有所帮助。

Sub LooproutineCharts() Dim TeamName As String Dim TeamNameCharts As String For i = 4 To 12 TeamName = Sheets("Parameter").Range("A" & i).Value 'identify the location TeamNameCharts = Sheets("Parameter").Range("B" & i).Value 'identify the location Call Charts(TeamName) ' Call subroutine Call Charts(TeamNameCharts) ' Call subroutine Next i End Sub Sub Charts(TeamName As String) 'Create a Line Chart for Healthy Start Docu' Dim lastRow As Long Dim ws As Worksheet Set ws = Sheets(TeamName) With Sheets(TeamName) lastRow = .Range("U" & Rows.count).End(xlUp).Row With ws ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLineMarkers ActiveChart.Parent.Name = "Variable A" ActiveChart.SetSourceData Source:=.Range("S3:U" & lastRow) ActiveSheet.Shapes("Variable A").Top = 20 ActiveSheet.Shapes("Variable A").Left = 20 ActiveSheet.Shapes("Variable A").Height = 300 ActiveSheet.Shapes("Variable A").Width = 700 ActiveChart.HasTitle = True ActiveChart.ChartTitle.Text = "Variable A" TeamName" End With End With End Sub 

我build议更新Charts Sub来使用Worksheet.ChartObjects

使用ChartObject,您可以设置它,而不必按名称引用形状。 它看起来像这样:

 Sub Charts(TeamName As String) 'Create a Line Chart for Healthy Start Docu' Dim theChart As ChartObject Dim lastRow As Long Dim ws As Worksheet Set ws = Sheets(TeamName) With ws lastRow = .Range("U" & Rows.Count).End(xlUp).Row Set theChart = .ChartObjects.Add(Left:=20, Top:=20, Width:=700, Height:=300) With theChart.Chart .ChartType = xlLineMarkers .SeriesCollection.Add Source:=ws.Range("S3:U" & lastRow) '.SeriesCollection(1).XValues = ws.Range("S2:U2") 'I have no idea where your xaxis is placed, or if it exist .HasTitle = True .ChartTitle.Text = TeamName End With End With End Sub 

我冒昧地认定图表标题应该与TeamName参数匹配。 我也已经准备好了xAxis,但是如果它是相关的,或者它放在哪里,我就没有oidea了