Если оба макроса находятся на Листе, то все работает, если вызывающий макрос находится в Модулях - не работает. Можно ли вызвать из модуля макрос с листа?
vikttur, Я как раз хочу из модуля вызвать макрос, который на листе. Это реально? (картинку под спойлер не могу вставить). New, Заменил на Public, то же самое. В пределах листа работает, из модуля - нет
Макрос из модуля листа должен вызывать макрос из общего модуля. В макросе из общего модуля прописать все то, что было в макросе листа. Теперь макрос из общего модуля можно вызвать откуда угодно.
Интересный вопрос Нажать неизвестную кнопку (пусть она будет в переменной) на неизвестном листе (пусть он будет в переменной) из стандартного модуля (расширил вопрос, т.к. интересна сама задача). Т.е. в конечном итоге - из стандартного модуля назначить событие листа (и => последующие действия). Копилка идей давно не обновлялась
А еще правильнее вообще не использовать элементы кнопок из группы ActiveX. Для кнопок есть и элементы форм и фигуры, и картинки и все в этом духе. А ActveX в какой-то момент может подкинуть радостей, вроде этой: Элементы ActiveX перестали работать или ведут себя непредсказуемо
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ну, это уже из области философии: что было раньше - курица или яйцо (и данная теорема и "что было раньше" - чистые предположения) А Excel - для решения практических офисных задач, это я и имел в виду Хотя, если иметь достаточное количество данных, может быть в Excel можно рассчитать и траектории всех спутников Маска и траекторию движения ракеты "Земля-Марс", просто подольше считать будет А насчет обращения к модулю листа из стандартного модуля - очень полезная штука, многим может пригодиться.
Nordheim, это потому, что Вы знаете для чего Excel и как с ним обходиться. А когда "ребенок" 5 лет провалял дурака в институте и устроился на работу т.к. мама с папой ему сказали наконец-то: "Давай дальше сам", может и стоит помочь и объяснить причины, почему так можно а так лучше не стоит, глядишь - и начнет думать работать, учиться пользоваться инструментами и пользу приносить . А насчет
Цитата
Nordheim написал: За 10 лет ни разу не пригодилось, а вот наоборот постоянно
Всему свое время Может MS упростит способы взаимодействия между объектами (классами)
vikttur: модулях листов должны бытть макросы событий. Остальное - в общий модуль. Тогда не будут возникать такие вопросы
Цитата
Nordheim: За 10 лет ни разу не пригодилось, а вот наоборот постоянно
+++
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
_Igor_61 написал: Может MS упростит способы взаимодействия между объектами (классами)
куда уж дальше упрощать? В любом другом языкехотя не так - в большинстве продвинутых языков Вы вообще не можете обратиться к функции другого модуля, не поколдовав при этом или не указав целевой модуль с этой функцией. Изначально вызов функций из других модулей и выглядит следующим образом:
Код
ИмяМодуля.ИмяФункции
И только благодаря MS нам позволено опустить имя модуля, если функция с таким именем единственная в проекте. VBE сам пройдет по всем модулям и найдет эту функцию. Если же в двух разных модулях одного проекта есть функция/процедура с одинаковым именем - то при вызове обязательно указывать имя модуля, в котором функция находится. Или переименовывать одну из функций. Как-то так... Но это не означает, что вызов функций из листа нельзя использовать. Это такие же модули, но использовать их надо с умом. Например, как и любой модуль класса, модуль листа всегда будет считать своими все объекты в коде, для которых явно не указан родитель. Если это не учесть, то некоторые процедуры при вызове дадут не совсем тот результат, который ожидается.