Установка диапазона данных графиков в VBA - PullRequest
0 голосов
/ 20 января 2020

Я помогаю обновить листы Excel, которые команда менеджеров использует для бизнес-анализа. Я делаю страницу панели инструментов, которая отображает данные в удобном для восприятия виде. Они добавляют данные на страницы данных, нажимают кнопку, и она обновляет значения.

Моя проблема заключается в том, чтобы диаграмма автоматически обновляла диапазоны в ней. Диаграмма состоит из двух рядов данных: поданных и выигранных, построенных по неделям. Поскольку недели в году go, в диаграмме будет больше данных.

Мой код выглядит следующим образом

Sub Dashboard_Tool()

Dim Sh1 As Worksheet
Dim sh2 As Worksheet
Dim Myvalue As String
Dim lastcell As Range
Dim B As Byte
Dim P As Byte

'this is to get the bid info
Set Sh1 = Worksheets("New Dashboard")
Set sh2 = Worksheets("MI Dashboard")

For B = 1 To 12
    Myvalue = sh2.Cells(9, B + 9)
    Sh1.Cells(26, 3).Value = Myvalue
    Sh1.Cells(26, 2).Value = "This Month (" & sh2.Cells(8, B + 9) & ")"
    If sh2.Cells(9, B + 10).Value = "" Then Exit For
Next B

Set lastcell = sh2.Cells(9, B + 9)
Debug.Print lastcell.Value
ActiveSheet.ChartObjects("Bid Chart").Activate
Application.CutCopyMode = False
ActiveChart.FullSeriesCollection(1).Values = "='MI Dashboard'!$K$9:" & Cells(lastcell.Row, lastcell.Column)

Это последняя цитата, которую я процитировал, это вопрос. Независимо от того, каким образом я пишу выражение, я получаю одну и ту же ошибку

Ошибка времени выполнения '1004':
Ошибка приложения или объекта

Я пытался переписать эту строку кода несколькими способами. Переменная для этого является столбцом. Строка всегда номер 9.

1 Ответ

0 голосов
/ 20 января 2020

В последней строке требуется строка адреса диапазона, назначенная для .Value, но ошибка, вероятно, возникает из-за того, что строимая строка не является допустимым адресом.

"='MI Dashboard'!$K$9:" & Cells(lastcell.Row, lastcell.Column)

объединяет первая часть со значением ячейки в столбце lastcell.row, кстати (между прочим, текущего активного листа).

Что-то ближе на это:

"='MI Dashboard'!$K$9:" & sh2.Cells(lastcell.Row, lastcell.Column).Address

Я предлагаю создать строку для адреса, который вы можете проверить перед присвоением .Value, просто чтобы вы знали, что это правильно.

Dim seriesAddress As String
seriesAddress = "='MI Dashboard'!$K$9:" & sh2.Cells(lastcell.Row, lastcell.Column).Address
Debug.Print seriesAddress
ActiveChart.FullSeriesCollection(1).Values = seriesAddress
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...