Я пытаюсь создать несколько диаграмм из ранее созданных именованных диапазонов, но я просто не могу заставить работать код VBA при обращении к ячейке, содержащей имя именованного диапазона.
Itвыглядит так:
Sub Top25_Charts()
Sheets("Top25Graphs").Activate
Set peerDataSht = ThisWorkbook.Worksheets("Top25History")
Set peerGraphSht = ThisWorkbook.Worksheets("Top25Graphs")
Set peerGraphDataSht = ThisWorkbook.Worksheets("Top25GraphsData")
Dim myDateRange As Range
'Dim myNamedRange As Range
Dim cht As Object
Dim NumberPeers As Integer
Dim NLetters As String
Dim NNumber As Integer
Application.ScreenUpdating = False
For i = 1 To 1
NumberPeers = peerDataSht.Cells(i + 30, 13)
NLetters = peerGraphDataSht .Cells(i + 30, 1)
CName = peerDataSht.Cells(i + 61, 2)
Set cht = peerGraphSht.Shapes.AddChart2.Chart
Set myDateRange = peerGraphDataSht.Range("Graph_Date")
With cht
.ChartType = xlXYScatterLinesNoMarkers
.HasTitle = True
.ChartTitle.Text = CName
.HasLegend = True
.Legend.Position = xlBottom
End With
For j = 1 To NumberPeers
NNumber = peerGraphDataSht .Cells(30, 1 + j)
num = peerDataSht.Cells(31, 1 + j)
PeerName = peerDataSht.Cells(61 + i, 1 + j)
'peerDataSht.Range(Cells(i + 30, 1 + j))
myNamedRange = NLetters & "_" & NNumber
With cht.SeriesCollection.NewSeries
.XValues = myDateRange
.Values = NLetters & "_" & NNumber
.Name = PeerName
End With
Next j
With cht.Parent
.Left = peerGraphSht.Range("B2").Left
.Top = peerGraphSht.Range("B2").Top
.Width = peerGraphSht.Range("B2:I2").Width
.Height = peerGraphSht.Range("B2:B16").Height
End With
Next i
Application.ScreenUpdating = True
End Sub
Но я не могу сослаться на NLetters
и NNumber
.Две ссылки, NLetters
и Nnumber
, содержат именованные диапазоны, поэтому именованные диапазоны называются a_1
, a_2
.... z_6
.
Строка peerDataSht.Range(Cells(i + 30, 1 + j))
относится непосредственнок ячейке, которая содержит именованный диапазон, но также не может использоваться.
Так можно ли ссылаться на ячейку, которая содержит имя именованного диапазона, или мне нужно вставить именованный диапазонпрямо в коде как в строке даты Set myDateRange = peerGraphDataSht.Range("Graph_Date")
?У меня есть 151 именованный диапазон, поэтому я бы не стал этого делать.