Таблица именованных диапазонов VBA - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь создать несколько диаграмм из ранее созданных именованных диапазонов, но я просто не могу заставить работать код 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 именованный диапазон, поэтому я бы не стал этого делать.

1 Ответ

0 голосов
/ 26 января 2019

Сначала я бы посоветовал вам добавить Option explicit над подпрограммой, потому что это предотвратит некоторые опечатки в коде, такие как peerGraphDataSht .Cells. Это также предотвратило бы появление переменных без ограничений, например myNamedRange.

Попробуйте dim myNamedRange as Range, а затем измените строку myNamedRange = NLetters & "_" & NNumber на set myNamedRange = Range(NLetters & "_" & NNumber). Тогда ассортимент должен покрывать ваши потребности.

...