Страницы: 1
RSS
Как в VBA прописать название листа с помощью переменных
 
Доброго времени суток!

Есть лист1, в нем ячейки А1 и А2 заполнены данными (скажем 1 и 2 соответственно, но цифры можно менять).
В ячейке А3 есть какой-то контент, допустим ФИО.
За листом1 есть еще уйма листов, с названиями от 1 до 99.

Задача: как заставить макрос по кнопке переносить данные из ячейки А3 на листе-исходнике Лист1 в ячейку А3 (или другую, на основании ячейки А4 листа1) на листе 12 (название листа формируется из сцепки цифр ячеек А1 и А2)?

Насколько я понял, нужно пользоваться функцией indirect, но у меня не получается запихнуть переменную в название листа...
Грубо говоря, нужно написать вот такой кусок кода:
Код
Application.Sheets("что-то с INDIRECT").select (
а уже с selection я разберусь, что делать).

Понимаю, что есть другие способы решения данной задачи, но интересно именно вписывание какой-либо формулы в имя листа, реально ли это?

Поможете?
Заранее спс! С наступившим!
Изменено: nOXX - 04.01.2018 23:02:22
 
В VBA аналога ДВССЫЛ (она же INDIRECT) нет. Даже в коллекции Application.WorksheetFunction

Цитата
nOXX написал: интересно именно вписывание какой-либо формулы в имя листа, реально ли это?
Конечно реально. Если Ваша формула результатом своей работы вернет значение, корректное с точки зрения Имени листа и наличия такого листа в Книге
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал: В VBA аналога ДВССЫЛ (она же INDIRECT) нет.
удивлен. Видел indirect в VBA, но немного в другом исполнении. Подумал, что есть..

Цитата
nOXX написал: интересно именно вписывание какой-либо формулы в имя листа...
вот как это сделать...
Я приложил файл - есть две строчки на главной странице и два дополнительных листа.
Задача - раскидать данные строчки по листам на основании выбранной информации в желтых столбцах на главном листе.
 
Цитата
nOXX написал: Видел indirect в VBA
Если не трудно, ознакомьте с увиденным. Удивлен не меньше
Согласие есть продукт при полном непротивлении сторон
 
nOXX,  INDIRECT - функция листа, которая берет данные по текстовому адресу, указанному в аргументе. и предназначена скорее для обратному вашему желанию, то есть исходя из того что  в А1 и A2 вернет с указанного листа значение из ячейи A3.
Можно извратится и искуственно её пристроить в код скрипта, но какой смысл.
Код
Worksheets([A1]&[A2]),Range("A3")=[A3]
или
Код
Worksheets(Range("A1")&Range("A2")),Range("A3")=Range("A3")
или еще масса вариантов эаписи, это единственное что Вам нужно в Вашем макросе, Естесвенно если [A1]&[A2] даст имя существующего листа и активный лист - это лист с вашими данными.
Изменено: БМВ - 04.01.2018 23:53:37
По вопросам из тем форума, личку не читаю.
 
Цитата
Sanja написал: Если не трудно, ознакомьте с увиденным
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=88498&MID=s- но может оно и не то

Цитата
БМВ написал:INDIRECT - функция листа, которая берет данные по текстовому адресу, указанному в аргументе.
по ходу я усложнил все... Сейчас попробую предложенные вами варианты, может и просто значек & все решит... Спасибо!
 
Я уже понял, что намудрил и задачу не совсем корректно поставил. Мне уже предлагали варианты, но я уперся именно в эту формулу, которая показалась мне интересной. Буду разбираться, спасибо!
 
Цитата
nOXX написал: - но может оно и не то
Совсем не то. Та тема о вставке формулы в Проверку данных Листа, а не о самостоятельном ее использовании в коде VBA
Согласие есть продукт при полном непротивлении сторон
 
Код
Sub 111()
Worksheets([N9] & [O9]).Select 'вместо select впишу требуемое
End Sub

Оказывается, все можно было решить просто.... Респект!
Изменено: nOXX - 04.01.2018 23:26:19
 
Цитата
nOXX написал: но возвращающее адрес требуемой ячейки.
Возвращающее ИМЯ ЛИСТА !!!
Согласие есть продукт при полном непротивлении сторон
 
Цитата
nOXX написал: Как раз цитирование и создано для упрощения понимания
Ваше цитирование было бездумным. Выписка из Правил форума. Кстати, если бы Вы с ними ознакомились ПЕРЕД созданием темы, то не пришлось бы и от модератора выслушивать и ответ бы получили по ЗАДАЧЕ, а не по СПОСОБУ, которым пытаетесь ее решить
Цитата
2.1. Название темы должно отражать смысл проблемы.
..........
4. Не рекомендуется
4.2. Чрезменое цитирование. Цитата – часть текста, на которой делается акцент. Бездумное цитирование захламляет тему и очень затрудняет ее восприятие. Для простого ответа есть кнопка «Ответить».
Согласие есть продукт при полном непротивлении сторон
 
nOXX, а теперь просмотрите тему. Без Вашего "суперцитирования" сообщения не связаны? Потеряли смысл?

Советую хорошенько прочитать правила форума и в будущем не пререкаться, если получаете замечание.
Страницы: 1
Наверх