我的代码如下。我下面的代码有一些问题。
1)我的Range
变量rngstart
,rngend
和rngend2
没有返回Range
变量,我不确定为什么。运行代码时我没有收到错误,但是(根据本地窗口),它们的值什么也不返回。我感到难过。
2)通过这些Range
变量,我想定义在图表中使用的数据源。我使用下面的结构使用ChartObject
对象和Chart
对象将图表添加到工作簿中。使用.SeriesCollection
是否可以添加多个数据源?如果发生了VBA图表专家的事件,我也想:
-为每个数据集标记两个y轴
总而言之,我坚持定义Range
变量以用于设置图表的源数据。感谢您的帮助!
Dim aa As Integer
Dim StartDate As String
Dim EndDate As String
Dim RngStart As Range
Dim RngEnd As Range
Dim RngEnd2 As Range
Dim DataRange1 As Range
Dim DataRange2 As Range
Dim DataRange3 As Range
Dim sh As Worksheet
Dim chrt As ChartObject
Dim ch As Chart
Dim zz As Integer
Dim NumObs2
NumObs2 = ActiveWorkbook.Sheets("AllDistanceMeasures").Range("C5",
Range("C5").End(xlDown)).Rows.Count
For aa = 5 To NumObs2
StartDate = ActiveWorkbook.Sheets("AllDistanceMeasures").Cells(aa, 9).value
EndDate = ActiveWorkbook.Sheets("AllDistanceMeasures").Cells(aa, 10).value
With ActiveWorkbook.Sheets("ActiveSheet")
Set RngStart = Cells.Find(What:=StartDate, After:=ActiveCell,
LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Set RngEnd = Cells.Find(What:=EndDate, After:=ActiveCell,
LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Offset(0, 1)
Set RngEnd2 = Cells.Find(What:=EndDate, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
End With
DataRange1 = RngStart.Address
DataRange2 = RngEnd.Address
DataRange3 = RngEnd2.Address
Set sh = ActiveWorkbook.Worksheets("LowDistCharts")
Set chrt = sh.ChartObjects.Add(0, 0, 300, 300)
Set ch = chrt.Chart
Set DataRange1 = ActiveWorkbook.Worksheets(DataSht).Range(DataRange)
'Set DataRange2 = ActiveWorkbook.Worksheets("ActiveSheet").Range(
'Set DataRange3 = Union(DataRange1,DataRange2)
With chrt
.Height = 300
.Width = 300
.Top = 1 + ((aa - 4) * 300)
.Left = 1
End With
With ch
.HasTitle = True
.ChartTitle.Text = aa & " " & StartDate & " to " & EndDate
.ChartTitle.Font.Size = 8
.ChartType = xlLine
'.SetSourceData Source:=Sheets("ActiveSheet").Range(DataRange1, DataRange2)
.SeriesCollection(aa - 4).Add (DataRange1)
.SeriesCollection(aa - 4).Add (Sheets("ActiveSheet").Range(DataRange1, DataRange2))
.SeriesCollection(aa - 4).AxisGroup = 2
.HasLegend = False
End With
For zz = 0 To NumObs - 1
Sheets("ActiveSheet").Range(DataRange3).Offset(zz, 0).Resize(, 2).Copy
Sheets("LowDistCharts").Cells(5, aa * 2 + 5).Offset(zz, 0).PasteSpecial xlPasteValues
Next zz