|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
13.01.2009, 00:55 | #1 |
Регистрация: 12.10.2008
Сообщений: 5
|
Автозапуск
Интересует вопрос:
Как запустить процедуру (программу) на одном из листов при открытии книги Excel или запустить процедуру (программу) при помощи макроса? Заранее спасибо. |
13.01.2009, 02:11 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
выполнить макрос можно двумя основными способами:
1. толчком для выполнения могут быть действия пользователя: а) открыл редактор ВБА, поставил курсор в тело макроса и нажал кнопку выполнить макрос (кнопку F5 или F8 для пошагового выполнения) б) щелкнул по кнопке на листе (а кнопке назначен макрос). в 2007 макросы можно назначить многим графическим обьектам в) выполнил ранее назначенный пользовательский пунк меню или щелкнул по пользовательской кнопке на панеле инструментов 2. если на определенное стандартное событие описана процедура его обработки, то при каждом возникновении этого события будет выполнятся эта процедура. поцедуры обработки событий (в основном) имеют стандартные имена, стандартные параметры, должны быть обьявлены надлежащим образом в соответственных модулях. Почитайте в помощи Event для Form, WorkBook, WorkSheet и увидите много интересного. Событий довольно много, некоторые имеют отношение к формам, некоторые к листам, некоторые к книге, некоторые к проекту и т.д. Данный пост не является исчерпывающим ответом на вопрос: я всех событий не знаю и не берусь их здесь перечислять, а тем более толковать, - здесь просто несколько примеров для общего представления о сути вопроса. Посмотрите вложение. Обьявлено 4 процедуры. 3 в модуле проекта и одна в модуле листа. Аналогично процедуры обьявляются в модулях форм или книги. Для каждой свое место. Заголовки процедур (название и параметры) необходимо смотреть в помощи.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
13.01.2009, 11:50 | #3 |
Регистрация: 12.10.2008
Сообщений: 5
|
IgorGO спасибо, что откликнулись на просьбу о помощи.
Извиняюсь, может, мой вопрос не столь корректен, т.к. его писал ближе к полуночи и после 3 часового поиска и попыток решить его самостоятельно. Сформулирую немного иначе: Есть процедура на одном из листов, можно ли ее запустить автоматически при открытии книги или вызвать процедуру при помощи макроса в Module. |
13.01.2009, 12:36 | #4 | |
Форумчанин
Регистрация: 19.01.2008
Сообщений: 120
|
Цитата:
<Имя процедуры которую нужно вызвать> End Sub |
|
13.01.2009, 13:09 | #5 |
Регистрация: 12.10.2008
Сообщений: 5
|
За ответ спасибо, но так не получается, это первое что я сделал, в этом случае выдает ошибку("Sub or Function not defined").
Как макрос из процедуры на одном из листов (скажим так) вызвать я знаю, а вот обратное действие, тоесть вызвать процедуру на одном из листов книги из макроса нет. |
13.01.2009, 13:23 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Короткий ответ - можно.
Небольшое отступление по организации возможностей для написания собственного кода: Открываем ВБА редактор, видим проект(ы) - соответствуют открытым книгам. В каждом пректе для написания собственного кода доступны следующие обьекты: лист(ы) книга дополнительно (если присутствуют) доступны модуль(и) форма(ы). Процедуры, описанные в модуле, видны отовсюду, т.е. просто в коде любого обьекта пишем имя процедуры - она сработает. Что запустить процедуру, описанную на листе, необходимо писать полный путь к ней: worksheets(N).ProcName где, worksheets(N) - конкретный лист, поставьте вместо N число или используйте "имя листа в скобках", или используйте любой другой способ сослаться на конкретный лист. ProcName - имя процедуры обьявленное на листе Конкретно по вашему вопросу: 1. В показанном ранее примере в процедуре auto_open впишите worksheets(N).ProcName 2. Та же рекомендация для примера выложенного b00s. Только описанная в примере процедура должна находится в книге 3. перенесите процедуру в модуль и вызовите из auto_open или перенесите ее в модуль и назовите auto_open. Во всех трех случаях ваша процедура выполнится автоматически при открытии книги. Удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
13.01.2009, 13:27 | #7 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Проблема заключалась в том, что в Вашем файле функция R1 определена с ключевым словом Private:
Код:
Код:
Код:
В этот раз я опоздал с ответом |
13.01.2009, 13:54 | #8 |
Регистрация: 12.10.2008
Сообщений: 5
|
Спасибо ОГРОМНОЕ, теперь все вышло. На будущее буду знать.
Еще раз спасибо и всех прошедшими праздниками. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автозапуск, Delphi | north | Помощь студентам | 19 | 06.08.2009 15:48 |
Автозапуск | Satorin | Общие вопросы Delphi | 14 | 14.12.2008 16:11 |
Автозапуск | PROGR | Общие вопросы Delphi | 8 | 26.12.2007 08:54 |
Автозапуск | zzzzz | Общие вопросы Delphi | 2 | 12.11.2007 08:54 |
автозапуск | effluent | Безопасность, Шифрование | 7 | 19.04.2007 20:12 |