VBA в Excel: управление диаграммой с помощью динамических диапазонов - PullRequest
0 голосов
/ 15 сентября 2018

Я работал над моделью Excel с динамическими диаграммами. По сути, пользователь должен иметь возможность изменять периоды, обозначенные на диаграмме, - это довольно просто. Тем не менее, у меня продолжают возникать проблемы с тем, чтобы заставить VBA работать так, как я намереваюсь (я не получаю ошибок, но он не ведет себя так, как я ожидал). Что я пытаюсь сделать:

  1. Установить динамическую легенду (в зависимости от того, сколько элементов пользователь хочет отобразить на диаграмме) - количество элементов определяется в Excel и просто добавляется к количеству строк в VBA.
  2. Установите динамический диапазон (начало и конец зависят от пользовательского ввода), однако кажется, что я не могу определить, где начинается диапазон, содержащий данные для построения графика.

В моем коде ниже Excel, кажется, игнорирует параметры в Rng2, то есть он начинает строить графики от столбца 53 до столбца 77 вместо того, что я собираюсь сделать из столбца 77 в 89. В качестве альтернативы, если я заменяю содержимое Rng3 жестко закодированными ссылками, оно работает просто отлично (т.е. Rng3 = .Range("$AZ5662:$AZ5667,$BY$5662:$CJ$5667")).

Что не так?

Большое спасибо!

С наилучшими пожеланиями, Philip

Set Cht = .ChartObjects("Chart 14").Chart
Set Rng1 = .Range(Cells(5662, 52), Cells(5663 + Worksheets("Control").Range("F20"), 52))
Set Rng2 = .Range(Cells(5662, 77), Cells(5663 + Worksheets("Control").Range("F20"), 88))
Set Rng3 = .Range(Rng1, Rng2)
Cht.SetSourceData _
Source:=Rng3
Cht.PlotBy = xlRows

1 Ответ

0 голосов
/ 15 сентября 2018

Когда вы используете Range(Range1,Range2), он выбирает верхнюю левую ячейку Range1 и нижнюю правую ячейку Range2 для построения диапазона.

Следовательно, результатом вашего Rng3 является квадрат, начинающийся с Cells(5662,52) и заканчивающийся Cells(5663+X,88), что вам не нужно.

Вы можете попробовать другой метод с именем Union( Rng1 , Rng2 , .... )

В нем будут храниться все границы каждого заданного объекта Range, так что это может быть несколько отдельных областей или даже странная форма, например, сердце или что-то еще: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...