Мой код ниже. У меня есть несколько проблем с кодом ниже.
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