【发布时间】:2017-03-29 20:33:55
【问题描述】:
我浏览了 excel 书中所有打开的工作表的 4 个其他循环,所有这些循环都在 stackoverflow 上搜索。我对 VBA 很陌生,所以我很难理解如何将这些答案操作到我的代码中。
我想做的是在每个活动工作表中创建一个图表。下面是我在工作表 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
【问题讨论】:
-
根据您的定义,什么是活动工作表?您一次只能有 1 个活动工作表。
-
Sheet1 中有数据吗?
-
对不起,我不清楚。我将在一个文件中有 384 张纸,我想循环浏览。因此,每张工作表都包含我要从中创建图表的 A 列和 B 列中的数据。如果我将脚本更改为每个工作表编号,我知道这会起作用,但我想知道循环是否会更简单,所以我没有上述脚本的 384 个副本。
-
记得添加下次需要的所有信息 ;-) 答案已经给出,很容易改变。