Задание переменных диапазона для использования в свойствах диаграммы VBA - PullRequest
0 голосов
/ 08 ноября 2018

Мой код ниже. У меня есть несколько проблем с кодом ниже.

1) Мои Range переменные rngstart, rngend и rngend2 не возвращают Range переменные, и я не уверен почему. Я не получаю сообщение об ошибке при запуске кода, но (в соответствии с окном локальных) их значения ничего не возвращают. Я в тупике.

2) С помощью этих Range переменных я хотел бы определить источники данных для использования в диаграмме. Я использовал приведенную ниже структуру для добавления диаграмм в рабочую книгу, используя объект ChartObject и объект Chart. С .SeriesCollection возможно ли добавить несколько источников данных? И в случае, если это случится с экспертом VBA Chart, я бы тоже - обозначить две оси 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...