Страницы: 1
RSS
Помогите указать макросу конкретный "Лист" для исполнения., Прописать абсолютный путь.
 
Добрый день. В очередной раз ищу помощи сообщества. Такой вопрос,макрос сейчас выполняется по нажатию кнопки на конкретной странице. Идея состоит в том, чтобы макрос выполнялся не по нажатию, а при открытии книги. Поместить его в Private Sub Workbook_Open() не составило труда, однако макрос будет работать корректно только если книга откроется на нужном листе. Открываться книга конечно же будет на другом листе с расчетами, а курсы будут подставляться через функцию ВПР, помогите указать абсолютный путь исполнения макроса.

P.S. Это нужно для того, чтобы Пользователь не запаривался о том, как обновляются циферки на странице и просто получал данные.
 
Как обратиться к диапазону из VBA

Кратко:
Код
Sheets("ИмяЛиста").Cells(1,1).Value = ""
Sheets("ИмяЛиста").Range("A1").Value = ""
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
у листа есть так называемое кодовое имя - вот по нему и можно обращаться
преимущество - не может быть изменено неквалифицированным пользователем( да и ни к чему ему)
минус - могут быть проблемы локализации - кодовые имена "переводятся". можно избежать этой проблемы заранее назвав лист( дав кодовое имя) на латинице.

пример:
Код
Лист1.cells(1).value
Живи и дай жить..
 
самый малозатратный метод - в начале макроса запомнить текущий лист, перейти на нужный, отработать(без изменения кода), восстановить активность прежнего листа
Живи и дай жить..
 
А можно по подробнее о последнем методе?
 
В дополнении к перечисленным
Код
Sheets("ИмяЛиста").[A1].Value
 
Что-то я не совсем понимаю, к чему можно прикрутить "Sheets("ИмяЛиста").[A1].Value". Если я правильно понял, самый малозатратный метод будет работать следующим образом:
- Открывается книга
- Запоминается наименование текущего листа
- Осуществляется переход на лист где выполняется основной макрос. (экспорт курсов валют)
- Возврат к исходному листу, с которого открылась книга.

Как это осуществить?
 
Зачем вообще переходить на другой лист, если нужно возвращаться? Без перехода всё обычно можно сделать (за редким исключением, что есть глюк экселя, сталкивался).
 
Полностью с Вами согласен, The_Priest предложил самый оптимальный вариант решения, однако мой небольшой опыт общения с VBA существенно усложняет реализацию. Но даже, когда у меня получится, все равно останется интерес к альтернативному способу, с запоминанием, переходом и возвратом на исходную.  
 
Да ничего сложного:
Код
    Dim r As Object
    '...
    Set r = ActiveSheet
    '...
    r.Select

P.S. И чего это r? Обычно sh! Хотя разницы нет. :)
Изменено: Hugo - 21.05.2015 12:38:22
 
Спасибо. Действительно все очень не сложно оказалось. Может быть вы любезно согласитесь глянуть где я допустил ошибку и почему не работает первый метод? Код идентичный, как при нажатии на кнопку, так и при запуске книги. Однако курсы обновляются только через "button". При открытие появляется только табличка "Готово"!
 
Вообще-то модуль книги - "стрёмное" место...
Попробуйте разместить код в модуле, ну а вызывать его можно по событию книги.

P.S. Беда сидит в строке
Код
x1 = Sheets("Беларусь").Cells(2, i).Value 'невядомая валюта
Тут дописал лист.
Изменено: Hugo - 21.05.2015 13:15:47
Страницы: 1
Наверх