Vostok
Дата: Воскресенье, 25.01.2015, 11:42 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация:
1
±
Замечаний:
40% ±
Excel 2010
Диапазон_2 - это Глобальное имя Диапазона данных. Если просто вставить его в строку оператора построения ряда Диаграммы типа: [vba]Код
.SetSourceData Source:=[Диапазон_2].Range(Cells(1, 1), Cells([Диапазон_2].Rows.Count, 2))
[/vba]Или в такой записи:[vba]Код
.SetSourceData Source:=Range("Диапазон_2").Range(Cells(1, 1), Cells(Range("Диапазон_2").Rows.Count, 2))
[/vba]Всё работает. Ряд Диаграммы строится по указанному Диапазону данных. Но если попробовать вставить имя диапазона через элемент массива, тоесть так: [vba]Код
Dim xBufferName() As String ReDim xBufferName(1 To 4) xBufferName(1) = "Диапазон_1" xBufferName(2) = "Диапазон_2" .SetSourceData Source:=[xBufferName(2) ].Range(Cells(1, 1), Cells([xBufferName(2) ].Rows.Count, 2))
[/vba] то уже не работает. Пробовал так: [vba]Код
.SetSourceData Source:=[" & xBufferName(2) & " ].Range(Cells(1, 1), Cells([" & xBufferName(2) & " ].Rows.Count, 2))
[/vba] тоже не работает. Помогите с синтаксисом кто может. Картинка происходящего для наглядности:
Диапазон_2 - это Глобальное имя Диапазона данных. Если просто вставить его в строку оператора построения ряда Диаграммы типа: [vba]Код
.SetSourceData Source:=[Диапазон_2].Range(Cells(1, 1), Cells([Диапазон_2].Rows.Count, 2))
[/vba]Или в такой записи:[vba]Код
.SetSourceData Source:=Range("Диапазон_2").Range(Cells(1, 1), Cells(Range("Диапазон_2").Rows.Count, 2))
[/vba]Всё работает. Ряд Диаграммы строится по указанному Диапазону данных. Но если попробовать вставить имя диапазона через элемент массива, тоесть так: [vba]Код
Dim xBufferName() As String ReDim xBufferName(1 To 4) xBufferName(1) = "Диапазон_1" xBufferName(2) = "Диапазон_2" .SetSourceData Source:=[xBufferName(2) ].Range(Cells(1, 1), Cells([xBufferName(2) ].Rows.Count, 2))
[/vba] то уже не работает. Пробовал так: [vba]Код
.SetSourceData Source:=[" & xBufferName(2) & " ].Range(Cells(1, 1), Cells([" & xBufferName(2) & " ].Rows.Count, 2))
[/vba] тоже не работает. Помогите с синтаксисом кто может. Картинка происходящего для наглядности: Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Сообщение отредактировал Vostok - Воскресенье, 25.01.2015, 15:08
Ответить
Сообщение Диапазон_2 - это Глобальное имя Диапазона данных. Если просто вставить его в строку оператора построения ряда Диаграммы типа: [vba]Код
.SetSourceData Source:=[Диапазон_2].Range(Cells(1, 1), Cells([Диапазон_2].Rows.Count, 2))
[/vba]Или в такой записи:[vba]Код
.SetSourceData Source:=Range("Диапазон_2").Range(Cells(1, 1), Cells(Range("Диапазон_2").Rows.Count, 2))
[/vba]Всё работает. Ряд Диаграммы строится по указанному Диапазону данных. Но если попробовать вставить имя диапазона через элемент массива, тоесть так: [vba]Код
Dim xBufferName() As String ReDim xBufferName(1 To 4) xBufferName(1) = "Диапазон_1" xBufferName(2) = "Диапазон_2" .SetSourceData Source:=[xBufferName(2) ].Range(Cells(1, 1), Cells([xBufferName(2) ].Rows.Count, 2))
[/vba] то уже не работает. Пробовал так: [vba]Код
.SetSourceData Source:=[" & xBufferName(2) & " ].Range(Cells(1, 1), Cells([" & xBufferName(2) & " ].Rows.Count, 2))
[/vba] тоже не работает. Помогите с синтаксисом кто может. Картинка происходящего для наглядности: Автор - Vostok Дата добавления - 25.01.2015 в 11:42
nilem
Дата: Воскресенье, 25.01.2015, 14:50 |
Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация:
563
±
Замечаний:
0% ±
Excel 2013, 2016
вот так попробуйте [vba]Код
.SetSourceData Source:=Range(xBufferName(1)).Resize(, 2)
[/vba]
вот так попробуйте [vba]Код
.SetSourceData Source:=Range(xBufferName(1)).Resize(, 2)
[/vba] nilem
Яндекс.Деньги 4100159601573
Ответить
Сообщение вот так попробуйте [vba]Код
.SetSourceData Source:=Range(xBufferName(1)).Resize(, 2)
[/vba] Автор - nilem Дата добавления - 25.01.2015 в 14:50
Vostok
Дата: Воскресенье, 25.01.2015, 15:16 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация:
1
±
Замечаний:
40% ±
Excel 2010
Ну собственно говоря сработал второй вариант, но с учётом предложенного Вами синтаксиса с Range() [vba]Код
.SetSourceData Source:=Range(xBufferName(2)).Range(Cells(1, 1), Cells(Range(xBufferName(2)).Rows.Count, 2))
[/vba] Далее в коде, при добавлении дополнительных данных из других диапазонов к этой же Диаграмме этот синтаксис мне будет единственно приемлем. Спасибо за подсказку. А вот с квадратными скобками - формой укороченной записи не получается.
Ну собственно говоря сработал второй вариант, но с учётом предложенного Вами синтаксиса с Range() [vba]Код
.SetSourceData Source:=Range(xBufferName(2)).Range(Cells(1, 1), Cells(Range(xBufferName(2)).Rows.Count, 2))
[/vba] Далее в коде, при добавлении дополнительных данных из других диапазонов к этой же Диаграмме этот синтаксис мне будет единственно приемлем. Спасибо за подсказку. А вот с квадратными скобками - формой укороченной записи не получается. Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Сообщение отредактировал Vostok - Воскресенье, 25.01.2015, 15:23
Ответить
Сообщение Ну собственно говоря сработал второй вариант, но с учётом предложенного Вами синтаксиса с Range() [vba]Код
.SetSourceData Source:=Range(xBufferName(2)).Range(Cells(1, 1), Cells(Range(xBufferName(2)).Rows.Count, 2))
[/vba] Далее в коде, при добавлении дополнительных данных из других диапазонов к этой же Диаграмме этот синтаксис мне будет единственно приемлем. Спасибо за подсказку. А вот с квадратными скобками - формой укороченной записи не получается. Автор - Vostok Дата добавления - 25.01.2015 в 15:16
Vostok
Дата: Среда, 04.02.2015, 11:00 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 211
Репутация:
1
±
Замечаний:
40% ±
Excel 2010
.SetSourceData Source:=Range(xBufferName(1)).Resize(, 2)
Альтернативный вариант: [vba]Код
.SetSourceData Source:=Evaluate(xBufferName(1)).Resize(, 2)
[/vba]
.SetSourceData Source:=Range(xBufferName(1)).Resize(, 2)
Альтернативный вариант: [vba]Код
.SetSourceData Source:=Evaluate(xBufferName(1)).Resize(, 2)
[/vba]Vostok
"Посылая кого-то в Google, Помните, завтра туда могут Послать Вас !"
Ответить
Сообщение .SetSourceData Source:=Range(xBufferName(1)).Resize(, 2)
Альтернативный вариант: [vba]Код
.SetSourceData Source:=Evaluate(xBufferName(1)).Resize(, 2)
[/vba]Автор - Vostok Дата добавления - 04.02.2015 в 11:00
krosav4ig
Дата: Среда, 04.02.2015, 11:48 |
Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация:
989
±
Замечаний:
0% ±
Excel 2007,2010,2013
еще 1 альтернативный вариант [vba]Код
.SetSourceData Source:=Evaluate("offset(" & xBufferName(1) & ",,,,2)")
[/vba]
еще 1 альтернативный вариант [vba]Код
.SetSourceData Source:=Evaluate("offset(" & xBufferName(1) & ",,,,2)")
[/vba] krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение еще 1 альтернативный вариант [vba]Код
.SetSourceData Source:=Evaluate("offset(" & xBufferName(1) & ",,,,2)")
[/vba] Автор - krosav4ig Дата добавления - 04.02.2015 в 11:48