Многим известен тип Диаграмм - с Зумом и Прокруткой. Хотел реализовать подобный тип Диаграмм на уровне VBA, но с одной прокруткой.
Создал ряд именованных формул. Но добавить их в код построения диаграммы не получается. Примеров нет. В Сети всё об одном - на уровне интерфейса Excel и не более того. Может кто сталкивался, буду признателен. Шаблон прилагается. Оговорюсь ещё раз, прокрутку в код не вносил для простоты шаблона. Интересует только Корректность вставки в код именованных формул.
Многим известен тип Диаграмм - с Зумом и Прокруткой. Хотел реализовать подобный тип Диаграмм на уровне VBA, но с одной прокруткой.
Создал ряд именованных формул. Но добавить их в код построения диаграммы не получается. Примеров нет. В Сети всё об одном - на уровне интерфейса Excel и не более того. Может кто сталкивался, буду признателен. Шаблон прилагается. Оговорюсь ещё раз, прокрутку в код не вносил для простоты шаблона. Интересует только Корректность вставки в код именованных формул.Vostok
Да какая разница? Это пример вставки именованного диапазона: Range("Диапазон_1") Если нужно в Ваш код вставить, то обозначьте в самом коде нужное место, чтобы не нужно было лазать по всему коду и искать то, что Вам нужно.
Да какая разница? Это пример вставки именованного диапазона: Range("Диапазон_1") Если нужно в Ваш код вставить, то обозначьте в самом коде нужное место, чтобы не нужно было лазать по всему коду и искать то, что Вам нужно._Boroda_
Если нужно в Ваш код вставить, то обозначьте в самом коде нужное место
Да если бы я знал, стал бы я тут вопросами народ мучить? :-) А что там лазить? Там всё же видно отлично. Три строки формирования рядов, их и надо заменить. Вот выделил области куда надо вставить код, заменив вышестоящий. Но это мне так кажется, я не уверен, что это правильное решение и оно будет работать. У меня не получается.
'***************************************************************************************** 'диаграмма есть, просто обновляем диапазоны .SetSourceData Source:=[Диапазон_4].Resize(, 2), PlotBy:=xlColumns
'***************************************************************************************** 'Обновляем Цены по 10-летней Доходности With .SeriesCollection(1) .Name = "Yield Canada 10Y" .ChartType = xlLine 'тип диаграммы - Обычный график .Format.Line.ForeColor.RGB = RGB(102, 102, 0) End With
'Обновляем СПРЕД Доходности 10-их и 2-х летних Облигаций .SeriesCollection.Add Source:=[Диапазон_4].Columns(8), Rowcol:=xlColumns, SeriesLabels:=True
With .SeriesCollection(2) .ChartType = xlColumnClustered 'тип диаграммы - Гистограмма .Format.Fill.ForeColor.RGB = RGB(204, 204, 204) End With
'Обновляем Цены по 2-летней Доходности .SeriesCollection.Add Source:=[Диапазон_4].Columns(7), Rowcol:=xlColumns, SeriesLabels:=True
With .SeriesCollection(3) .ChartType = xlLine 'тип диаграммы - Обычный график .Name = "Yield Canada 2Y" .Format.Line.ForeColor.RGB = RGB(0, 153, 0) End With
Если нужно в Ваш код вставить, то обозначьте в самом коде нужное место
Да если бы я знал, стал бы я тут вопросами народ мучить? :-) А что там лазить? Там всё же видно отлично. Три строки формирования рядов, их и надо заменить. Вот выделил области куда надо вставить код, заменив вышестоящий. Но это мне так кажется, я не уверен, что это правильное решение и оно будет работать. У меня не получается.
'***************************************************************************************** 'диаграмма есть, просто обновляем диапазоны .SetSourceData Source:=[Диапазон_4].Resize(, 2), PlotBy:=xlColumns
'***************************************************************************************** 'Обновляем Цены по 10-летней Доходности With .SeriesCollection(1) .Name = "Yield Canada 10Y" .ChartType = xlLine 'тип диаграммы - Обычный график .Format.Line.ForeColor.RGB = RGB(102, 102, 0) End With
'Обновляем СПРЕД Доходности 10-их и 2-х летних Облигаций .SeriesCollection.Add Source:=[Диапазон_4].Columns(8), Rowcol:=xlColumns, SeriesLabels:=True
With .SeriesCollection(2) .ChartType = xlColumnClustered 'тип диаграммы - Гистограмма .Format.Fill.ForeColor.RGB = RGB(204, 204, 204) End With
'Обновляем Цены по 2-летней Доходности .SeriesCollection.Add Source:=[Диапазон_4].Columns(7), Rowcol:=xlColumns, SeriesLabels:=True
With .SeriesCollection(3) .ChartType = xlLine 'тип диаграммы - Обычный график .Name = "Yield Canada 2Y" .Format.Line.ForeColor.RGB = RGB(0, 153, 0) End With
Тезка, если честно, я не очень понимаю, что Вы хотите. У меня (на Excel 2010) Ваш код работает. Возможно, Вам нужно что-то типа вот этого: если Вы вставляете в диаграмму имена в ряды и категории, то, если это имена в области книги, то нужно перед ним поставить еще название книги с !, а если это имена области листа, то название листа с !. Типа вот так: [vba]
[/vba] Топните на зеленую линию и посмотрите в строку формул - там будут имена. Кстати, поменял у Вас имя Close_2Y, чтобы можно было и вручную проверить - формулы листа не понимают, что такое cells.
Тезка, если честно, я не очень понимаю, что Вы хотите. У меня (на Excel 2010) Ваш код работает. Возможно, Вам нужно что-то типа вот этого: если Вы вставляете в диаграмму имена в ряды и категории, то, если это имена в области книги, то нужно перед ним поставить еще название книги с !, а если это имена области листа, то название листа с !. Типа вот так: [vba]
[/vba] Топните на зеленую линию и посмотрите в строку формул - там будут имена. Кстати, поменял у Вас имя Close_2Y, чтобы можно было и вручную проверить - формулы листа не понимают, что такое cells._Boroda_
Тезка, если честно, я не очень понимаю, что Вы хотите.
Я хотел, чтобы было всё как с зелёной линией. Таблица включает например 100 записей, но на экран Диаграммы, если его можно так назвать, выводится только, к примеру, 30 дат. Остальные даты и точки всех рядов Диаграммы можно будет посмотреть с помощью полосы прокрутки.
'Обновляем СПРЕД Доходности 10-их и 2-х летних Облигаций .SeriesCollection.Add Source:=[Spred_10Y_2Y], Rowcol:=xlColumns, SeriesLabels:=True With .SeriesCollection(2) .XValues = "=InvestingChart_2.xlsm!Data" .Values = "=InvestingChart_2.xlsm!Spred_10Y_2Y" .ChartType = xlColumnClustered 'тип диаграммы - Гистограмма .Format.Fill.ForeColor.RGB = RGB(204, 204, 204) End With
'Обновляем Цены по 2-летней Доходности .SeriesCollection.Add Source:=[Close_2Y], Rowcol:=xlColumns, SeriesLabels:=True With .SeriesCollection(3) .XValues = "=InvestingChart_2.xlsm!Data" .Values = "=InvestingChart_2.xlsm!Close_2Y" .ChartType = xlLine 'тип диаграммы - Обычный график .Name = "Yield Canada 2Y" .Format.Line.ForeColor.RGB = RGB(0, 153, 0) End With
[/vba]
Диаграммы будут строится в цикле по 26 таблицам вот в такие ряды:
Поэтому и нужна была полная автоматизация. Но теперь другая проблема высвечивается. Ведь всё пойдёт циклом, а значит для каждой таблицы придётся свои именованные формулы создавать, а значит в эти формулы нужно будет подставлять данные через элементы массива. Вот как эти формулы, и функция СМЕЩ в частности примет подстановку через элемент массива- ОПЯТЬ НЕИЗВЕСТНОСТЬ.
Тезка, если честно, я не очень понимаю, что Вы хотите.
Я хотел, чтобы было всё как с зелёной линией. Таблица включает например 100 записей, но на экран Диаграммы, если его можно так назвать, выводится только, к примеру, 30 дат. Остальные даты и точки всех рядов Диаграммы можно будет посмотреть с помощью полосы прокрутки.
'Обновляем СПРЕД Доходности 10-их и 2-х летних Облигаций .SeriesCollection.Add Source:=[Spred_10Y_2Y], Rowcol:=xlColumns, SeriesLabels:=True With .SeriesCollection(2) .XValues = "=InvestingChart_2.xlsm!Data" .Values = "=InvestingChart_2.xlsm!Spred_10Y_2Y" .ChartType = xlColumnClustered 'тип диаграммы - Гистограмма .Format.Fill.ForeColor.RGB = RGB(204, 204, 204) End With
'Обновляем Цены по 2-летней Доходности .SeriesCollection.Add Source:=[Close_2Y], Rowcol:=xlColumns, SeriesLabels:=True With .SeriesCollection(3) .XValues = "=InvestingChart_2.xlsm!Data" .Values = "=InvestingChart_2.xlsm!Close_2Y" .ChartType = xlLine 'тип диаграммы - Обычный график .Name = "Yield Canada 2Y" .Format.Line.ForeColor.RGB = RGB(0, 153, 0) End With
[/vba]
Диаграммы будут строится в цикле по 26 таблицам вот в такие ряды:
Поэтому и нужна была полная автоматизация. Но теперь другая проблема высвечивается. Ведь всё пойдёт циклом, а значит для каждой таблицы придётся свои именованные формулы создавать, а значит в эти формулы нужно будет подставлять данные через элементы массива. Вот как эти формулы, и функция СМЕЩ в частности примет подстановку через элемент массива- ОПЯТЬ НЕИЗВЕСТНОСТЬ.Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Сообщение отредактировал Vostok - Понедельник, 02.02.2015, 08:59
Кстати, поменял у Вас имя Close_2Y, чтобы можно было и вручную проверить - формулы листа не понимают, что такое cells
Вот эта фраза реально мозги осветила. Cells я использовал для определения точки отчёта для функции СМЕЩ. Её так везде описывают , что в голове прописывается то, что это должна быть непременно какая -то точка отсчёта. Тут и погорел.
Кстати, поменял у Вас имя Close_2Y, чтобы можно было и вручную проверить - формулы листа не понимают, что такое cells
Вот эта фраза реально мозги осветила. Cells я использовал для определения точки отчёта для функции СМЕЩ. Её так везде описывают , что в голове прописывается то, что это должна быть непременно какая -то точка отсчёта. Тут и погорел.