Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подстановка Имени Диапазона через переменную - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подстановка Имени Диапазона через переменную (Макросы/Sub)
Подстановка Имени Диапазона через переменную
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] тоже не работает. Помогите с синтаксисом кто может.
Картинка происходящего для наглядности:


"Посылая кого-то в 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]


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


"Посылая кого-то в 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]


"Посылая кого-то в 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]


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
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подстановка Имени Диапазона через переменную (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!