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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2013, 10:23   #1
w00t
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 29
По умолчанию Автопереименование листа при вводе в ячейку и обратная процедура

Сам макрос:
Код:
01	Sub SheetList()
02	   Dim sheet As Worksheet
03	   Dim cell As Range
04	   With ActiveWorkbook
05	      For Each sheet In ActiveWorkbook.Worksheets
06	         Set cell = Worksheets(1).Cells(sheet.Index, 1)
07	         .Worksheets(1).Hyperlinks.Add anchor:=cell, Address:="", SubAddress:="'" & sheet.Name & "'" & "!A1"
08	         cell.Formula = sheet.Name
09	      Next
10	   End With
11	End Sub
Затем правой кнопкой мыши по ярлычку листа с оглавлением - Исходный текст, вставляю код:

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
    Worksheets(Target.Row).Name = Target.Value
    Hyperlinks.Add anchor:=Target, Address:="", _
          SubAddress:="'" & Target.Value & "'" & "!A1"
End Sub
Соответственно, если в A1:A10 меняю текст в ячейке - изменяется и текст в названии листа

И третий макрос, при изменении названия листа - меняется текст ячейки

Код:
Private Sub Worksheet_Activate()
Dim iList
Sheets("Оглавление").Select
Range("A1:A10").Select
Selection.ClearContents
For Each iList In ActiveWorkbook.Worksheets
   With Worksheets(1).Cells(iList.Index, 1)
         .Hyperlinks.Add Anchor:=.Item(1), Address:="", _
          SubAddress:="'" & iList.Name & "'" & "!A1"
         .Formula = iList.Name
    End With
Next
    Sheets("Оглавление").Select
End Sub
Последние два вместе не работают, кокретно, если перехожу с другого листа на лист оглавление - оно очищается и Worksheets(Target.Row).Name = Target.Value выдает ошибку. как корректно заставить работать:

1. автоочистка оглавления от "хвостов"
2. создание оглавления
3. реагирование на изменение текста в ячейке "Оглавления" и переименовывание листа
4. переименовывание листа с автопереименованием ячейки в листе "Оглавление".

Последний раз редактировалось w00t; 31.01.2013 в 10:28.
w00t вне форума Ответить с цитированием
Старый 31.01.2013, 13:09   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

w00t, я так понял, что никакого Excel-события не возникает при переименовании листа. Поэтому можно использовать макрос для переименования листов: нажимаете кнопку, появляется окно "InputBox", вводите имя листа и заодно ещё какой-нибудь код выполняется.
Скрипт вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое заполнение ячейки при вводе данных в другую ячейку. Julie Khvostova Microsoft Office Excel 10 18.07.2019 12:08
Процедура должна выводить сумму при вводе номера, но кроме суммы выводит еще что такого номера нет yohurt Помощь студентам 1 09.01.2012 07:35
ошибка про вводе текста через TextBox в ячейку листа alvazor Microsoft Office Excel 3 21.09.2010 12:36
Вывод сообщения при вводе цыфры в ячейку vasyater Microsoft Office Excel 2 23.06.2010 16:32
При вводе значения в ячейку нужно изменить ее размер skobarka Microsoft Office Excel 2 26.09.2008 16:35