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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2011, 21:44   #11
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вы писали:
Цитата:
Сообщение от fx59 Посмотреть сообщение
Возникла необходимость запустить макрос при изменении названия текущего листа.
Вам показали как. То, что Вы ответили в посте от Сегодня 20:13, наверное требует криптологической экспертизы. Я ничего не понял. Либо объясните, чего хочется, на понятном языке и повторюсь, с Вашим примером - либо ждите экстрасенса. Я умываю руки.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 11.07.2011, 22:12   #12
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Вам показали как. То, что Вы ответили в посте от Сегодня 20:13, наверное требует криптологической экспертизы. Я ничего не понял. Либо объясните, чего хочется, на понятном языке и повторюсь, с Вашим примером - либо ждите экстрасенса. Я умываю руки.
Прошу прощения я не хотел Вас запутать. Попробую еще раз на пальцах, ибо примера у меня нет.

Запустил я Excel открыл в нем файл xxx.xlsm. В нем есть некоторое количество листов, оно нам не важно. Важно то, что они будут добавляться методом копирования (хотя для решения задачи я думаю и это не важно). Скопировал я себе лист и сделал его активным. Задаю ему имя "yyy" (щелкая дважды по ярлычку с названием листа внизу). Было бы просто здорово если после нажатия ентер в ячейке A1 (к примеру) ДАННОГО ЛИСТА (ActiveSheet если хотите) возник текст: Лист - yyy, рабочая книга - xxx (без .xlsm)

Излагая ближе к коду: при переименовании листа (применении названия - нажатие ентер) хочу исполнить такой вот код:
Код:
ActiveSheet.Range("A1").FormulaR1C1 = Left("Лист - " & LCase(ActiveSheet.Name) & ", " & ThisWorkbook.Name, Len("Лист - " & ActiveSheet.Name & ", " & ThisWorkbook.Name) - 5)
Т. е. вписать в ячейку A1 ActiveSheet'а статичный текст с новым именем листа строчными буквами и отрезать 5 символов в конце - ".", "x", "l", "s" и "m"
fx59 вне форума Ответить с цитированием
Старый 11.07.2011, 23:46   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

=ЯЧЕЙКА("имяфайла")
C:\[Книга1.xls]Лист1
Вот и берите из этой строки что нужно. А что нужно, я так и не понял - как это у имени листа отрезать xlsm?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.07.2011, 23:53   #14
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Насколько я понял, человек пытается запустить макрос по событию "изменение имени листа".
RAN. вне форума Ответить с цитированием
Старый 12.07.2011, 00:17   #15
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Ну недоступно это событие "переименование листа", как и многие другие.

Может, просто колонтитул создать из имени листа и книги? Тогда эта строка и глаза мозолить не будет, а появится только при печати и предварительном просмотре. Правда, расширение отрезать не удастся.

Однако, если в книге есть хоть одна "летучая" формула (СЕГОДНЯ(), СЛЧИС()), то переименование листа вызывает событие пересчета.
Попробуйте приложенный файл.
Учтите, что обновление текста на активном листе будет происходить при каждом "чихе" - например, при редактировании ячейки на любом листе.
Вложения
Тип файла: rar fx59.rar (5.9 Кб, 11 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 12.07.2011, 17:18   #16
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
как это у имени листа отрезать xlsm?
Я не про лист писал а про строку текста которая должна записаться в ячейку. Попробуйте на досуге это исполнить
Код:
ActiveSheet.Range("A1").FormulaR1C1 = Left("Лист - " & LCase(ActiveSheet.Name) & ", " & ThisWorkbook.Name, Len("Лист - " & ActiveSheet.Name & ", " & ThisWorkbook.Name) - 5)
ActiveSheet.Range("A1").FormulaR1C1 = ThisWorkbook.Name запишет в ячейку A1 активного листа название рабочей книги вместе с расширением файла .xlsm которое мне не нужно как раз.

Цитата:
Может, просто колонтитул создать из имени листа и книги? Тогда эта строка и глаза мозолить не будет, а появится только при печати и предварительном просмотре. Правда, расширение отрезать не удастся.
Не годится поскольку документы нужно будет выводить на печать без этой ерунды.

Цитата:
Ну недоступно это событие "переименование листа", как и многие другие.
По меньшей мере ЭТОТ и ЭТОТ источники утверждают об обратном. Правда ТУТ я указывал что с ними не ладно. Может у меня что то с руками не ладно? Если бы более опытные взглянули на этот код может и поняли что не так...

Цитата:
Однако, если в книге есть хоть одна "летучая" формула...
Гениально! Сделаю текст выводимый этой функией белым и помещу в свободную ячейку.

Всем спасибо за помощь!
fx59 вне форума Ответить с цитированием
Старый 12.07.2011, 18:46   #17
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

По меньшей мере ЭТОТ и ЭТОТ источники утверждают об обратном

Там используются события активации/деактивации листа. То есть, например, чтобы метод сработал для листа, который активен сразу после открытия книги, надо сначала перейти на другой лист, потом снова на этот, переименовать, перейти на другой (и снова на этот, чтобы увидеть результат). Не очень удобно, правда?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 12.07.2011, 20:48   #18
fx59
 
Регистрация: 09.07.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
[I]Не очень удобно, правда?
Правда! Только без разъяснений я бы не догадался. Ну да бог с ним. Способ предложенный Вами подходит мне идеально. Спасибо. Тему можно закрывать.
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