我已经看到在 excel 中使用 VBA 的类似问题,但我使用的是 VBScript,所以它有点不同。其他问题的答案给了我一些线索,但我只是不知道如何解决这个问题。
我正在使用 .SetSourceData 定义要在图表中使用的范围。它可以很好地定义从第一行到最后一行(整张纸)的范围,但我想使用之前定义的变量来定义动态范围。所以这有效:
.SetSourceData objWorksheet.Range("E1","F" & LastRow), xlColumns
其中 LastRow 定义为LastRow=objWorksheet.UsedRange.Rows.Count
。现在我想做的是使用从最后一行开始的范围,返回几行。所以我的想法是这样做:
.SetSourceData objWorksheet.Range(Rowstring,"F" & LastRow), xlColumns
其中 RowString 定义为
WeekNumber = LastRow - 1000
RowString = "E" & WeekNumber
但这给了我一个错误。如何在范围内使用字符串变量,并将其设置为图表生成的源数据?这是我正在使用的代码
WeekNumber = LastRow - 1000
RowString = "E" & WeekNumber
WScript.echo(RowString)
' Data for last week
Sub LastWeek()
WeekNumber = LastRow - 1000
RowNumber = LastRow - WeekNumber
RowString = "E" & RowNumber
End Sub
myrange = "E1:E52"
Set Range1 = objWorksheet.Range(myrange)
' Define chart properties
Set objChart = objExcel.Charts.Add()
With objChart
'define chart type
.ChartType = xlXYScatterLinesNoMarkers
'format chart
.SeriesCollection(1).Border.Color = RGB(255, 0, 0)
REM .ChartArea.Color = RGB(255, 255, 255)
.PlotArea.Interior.Color = RGB(255, 255, 255)
.HasTitle = True
.ChartTitle.Text = "usage"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "test"
.HasLegend = False
'define data
.SetSourceData objWorksheet.Range(RowString,"F" & LastRow), xlColumns
.Export "Test.png", "PNG"
End With
先感谢您