Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2011, 22:26   #1
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию Как создать условие запуска макроса

Доброго времени суток.
Я далек от звания "Великого писаря на VBA" к сожалению, но раньше на все мои вопросы отвечали поисковики. Но вот возникла проблема которую с их помощью мне решить не удалось.
Возникла необходимость запустить макрос при изменении названия текущего листа. То есть существует лист и он имеет какое-то название. И вот ручками я его правлю и по нажатию кнопки Enter (применение названия листа) я бы хотел увидеть как заработал макрос. Процедура Worksheet_Change как оказалось здесь не годится.
fx59 вне форума Ответить с цитированием
Старый 10.07.2011, 10:17   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Я вижу только 2 способа:

1) Пользовательская функция в ячейке, возвращающая имя листа,
и проверка имени листа (сравнение с предыдущим именем) при пересчёте этой UDF

Код:
Public PreviousSheetName As String

Function SheetName(ByRef cell As Range)
    Application.Volatile True
    SheetName = cell.Worksheet.Name
    If PreviousSheetName <> SheetName Then
        If Len(PreviousSheetName) Then MsgBox "Новое имя листа: " & SheetName
        PreviousSheetName = SheetName
    End If
End Function
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__12-16-05.zip
(попробуйте переименовать лист)

2) Поискать решение в поисковике (они всё-таки отвечают, если правильно формулировать запрос)

Вот что удалось найти:
http://www.msofficegurus.com/post/Ex...ame-Event.aspx
http://stackoverflow.com/questions/1...event-in-excel
EducatedFool вне форума Ответить с цитированием
Старый 10.07.2011, 14:58   #3
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Благодарю что так быстро откликнулись, но...

1) Решать вопрос с помощью функции не хотелось бы... в первом приближении скажем.

2) Вариант по ссылке №1 почему то никак не реагирует на изменение названия листа. Хотя, как я понимаю, код должен выдать месажбокс.

Вариант по ссылке №2 вообще выдает ошибку компиляции "Only valid in object module" и тычет носом в "WithEvents" во второй строке. А каков результат выполнения сего кода?

з.ы. Правильно спросить у поисковика порой не так то просто. Жаль что английский для меня все равно что суахили. Рускоязычные интернеты никак не могли понять что я он них хочу.
fx59 вне форума Ответить с цитированием
Старый 11.07.2011, 19:20   #4
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Ну что, ни у кого нет никаких мыслей как сделать работоспособным этот или этот способ?
fx59 вне форума Ответить с цитированием
Старый 11.07.2011, 19:28   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

А можно поинтересоваться - зачем? Я просто подозреваю, что Вам совсем не это нужно.
П.С. Ваш пример в виде файла поможет Вам быстрей получить решение.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 11.07.2011, 19:38   #6
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
А можно поинтересоваться - зачем?
Желаю чтобы в нужную мне ячейку записывался "текст" & название_листа & название_рабочей_книги (без расширения файла) автоматически после переименования листа. "Текст" статичный в ячейке, название_листа соответственно каждый раз меняется и название_рабочей_книги аналогично меняется.
Или есть стандартная функия для вставки названия рабочей книги с возможностью обрези лишних символов в строке? Если так то можно и посредством пользовательской функции решить вопрос.
fx59 вне форума Ответить с цитированием
Старый 11.07.2011, 19:46   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Так ведь есть ЯЧЕЙКА()
А результат можно обрезать другими функциями.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.07.2011, 19:54   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Я поэтому и писал про пример. Что есть - что хочу. Пока смотрите мой. Попробуйте переименовать любой лист.
Вложения
Тип файла: rar Книга.rar (7.1 Кб, 21 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 11.07.2011 в 20:00.
kuklp вне форума Ответить с цитированием
Старый 11.07.2011, 21:13   #9
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Я поэтому и писал про пример. Что есть - что хочу. Пока смотрите мой. Попробуйте переименовать любой лист.
Не сразу получилось разобраться что к чему. Проблема тут в точности такая же как если в процедуру Worksheet_Change вставить код вписывающий всю информацию в нужную мне ячейку. Пока не произойдет пересчет код выполнен не будет. В случае если переименование листа будет последним действием то и наш код не отработает. Почему то очень хочется чтобы призывам к действию стало нажатие кнопки энтр при присвоении листу нового названия. Ввод названия листа через форму не предлагать
fx59 вне форума Ответить с цитированием
Старый 11.07.2011, 21:14   #10
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Так ведь есть ЯЧЕЙКА()
А результат можно обрезать другими функциями.
С этого места можно пожалуйста поподробнее?
fx59 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перехват запуска макроса из дебугера alvazor Microsoft Office Excel 0 29.03.2010 15:24
Условие для макроса Sidorow2001 Microsoft Office Access 0 25.01.2010 15:10
Как создать условие для кнопок? segail Microsoft Office Excel 4 20.06.2009 14:13
Условие для макроса sergiksergik Microsoft Office Excel 8 23.05.2009 20:54
Как создать новый файл Word из макроса Excel? Dorvir Microsoft Office Excel 12 08.07.2008 16:50