设置范围变量以在图表属性VBA中使用

时间:2018-11-08 20:23:07

标签: excel vba excel-vba

我的代码如下。我下面的代码有一些问题。

1)我的Range变量rngstartrngendrngend2没有返回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

0 个答案:

没有答案