我已经浏览了excel书中所有打开的工作表中的另外4个循环,所有这些都在stackoverflow上进行了搜索。我对VBA很新,所以我很难理解如何将这些答案操作到我的代码中。
我想要做的是在每个活动工作表中创建一个图表。下面是我在Sheet 1中创建图表的代码(从另一篇文章中找到并将参数更改为我需要的参数)。它创建了我想要的图表。我不知道如何在代码中引用当前工作表而不是工作表1,所以我知道这是我的第一个障碍。我确实找到了如何循环https://support.microsoft.com/en-us/kb/142126但它只运行Sheet 1,因为我不知道如何正确更改该参数。
Sub chartcreation()
Dim sh As Worksheet
Dim chrt As Chart
Set sh = ActiveWorkbook.Worksheets("Sheet1")
Set chrt = sh.Shapes.AddChart.Chart
With chrt
'Data?
.ChartType = xlXYScatterSmooth
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = "=Sheet1!B1"
.SeriesCollection(1).XValues = "=Sheet1!$A$3:$A$630"
.SeriesCollection(1).Values = "=Sheet1!$B$3:$B$630"
'Titles
.HasTitle = True
.ChartTitle.Text = "=Sheet1!B1"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = Range("A2")
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Range("B2")
'Formatting
.Axes(xlCategory).HasMinorGridlines = False
.Axes(xlValue).HasMajorGridlines = True
.Axes(xlCategory).MinimumScale = 15
.Axes(xlCategory).MaximumScale = 90
.Axes(xlValue).HasMinorGridlines = False
.Axes(xlValue).MinimumScale = 0
.Axes(xlValue).MaximumScale = 60
.HasLegend = True
End With
End Sub
答案 0 :(得分:1)
您的代码设置得很好,只需要进行一些更改。首先遍历ActiveWorkbook中的所有工作表,然后更改值以引用工作表变量。
Sub chartcreation()
Dim sh As Worksheet
Dim chrt As Chart
For Each sh In ActiveWorkbook.Worksheets
Set chrt = sh.Shapes.AddChart.Chart
With chrt
'Data?
.ChartType = xlXYScatterSmooth
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = sh.Range("B1").Value
.SeriesCollection(1).XValues = sh.Range("$A$3:$A$630")
.SeriesCollection(1).Values = sh.Range("$B$3:$B$630")
'Titles
.HasTitle = True
.ChartTitle.Text = sh.Range("B1").Value
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = sh.Range("A2")
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = sh.Range("B2")
'Formatting
.Axes(xlCategory).HasMinorGridlines = False
.Axes(xlValue).HasMajorGridlines = True
.Axes(xlCategory).MinimumScale = 15
.Axes(xlCategory).MaximumScale = 90
.Axes(xlValue).HasMinorGridlines = False
.Axes(xlValue).MinimumScale = 0
.Axes(xlValue).MaximumScale = 60
.HasLegend = True
End With
Next
End Sub
<强>测试强>
答案 1 :(得分:0)
您可以使用
遍历表格Sheets("Sheetname").Select
在那里你可以把工作表的名字放进砖头里。 或者您可以使用它:
WS_Count = ActiveWorkbook.Worksheets.Count
这将为您提供工作簿的数量。并选择。您可以选择一个接一个