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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2010, 12:32   #1
bud-dy
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 15
По умолчанию Имя листа в зависимости от ячейки

Хотелось бы, что бы имя листа совпадало с значением ячейки допустим А1.
Написал такой макрос.
Что я делаю не так?

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Cells = .Cells(1, 1) Then
Application.EnableEvents = False
ActiveSheet.Name = Cells(1, 1)
Application.EnableEvents = True
End If
End With
End Sub
bud-dy вне форума Ответить с цитированием
Старый 05.02.2010, 12:42   #2
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Row = 1 And Target.Column = 1 Then
            
            If Target.Cells.Value = "" Then Exit Sub
            
            Application.EnableEvents = False
            ActiveSheet.Name = Target.Cells.Value
            Application.EnableEvents = True
        End If
End Sub
Причем Ваш вариант тоже прекрасно работает!
Только проверка на пустоту в ячейке должна быть обязательно!

Последний раз редактировалось Maxx; 05.02.2010 в 12:45.
Maxx вне форума Ответить с цитированием
Старый 05.02.2010, 13:23   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно чуть проще:

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Address = [a1].Address Then Me.Name = [a1]
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 05.02.2010, 13:52   #4
bud-dy
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 15
По умолчанию

Спасибо вам. А как сделать проверку на наличие листа с таким же именем и в таком случае изменить его на ИмяЛиста(2)?
bud-dy вне форума Ответить с цитированием
Старый 05.02.2010, 13:59   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А как сделать проверку на наличие листа с таким же именем и в таком случае изменить его на ИмяЛиста(2)?
Сложно это всё - кода много.

А если лист с именем ИмяЛиста(2) уже существует? Присваивать имя ИмяЛиста(3)?

А если текст в ячейке содержит недопустимые для названия листа символы?
А если длина текста в ячейке больше 31 символа?

Если учитывать все эти нюансы, код разрастётся до 20 строк... Оно Вам надо?
EducatedFool вне форума Ответить с цитированием
Старый 05.02.2010, 14:22   #6
bud-dy
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 15
По умолчанию

Жаль. Но спасибо большое. Решил проблему немного по другому.
bud-dy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имя листа Sensy Microsoft Office Excel 2 14.12.2009 17:23
Получение имя листа из ячейки. Sergg Microsoft Office Excel 4 11.09.2009 17:21
Перенос из одного листа в другой в зависимости от значений Rurikovitch Microsoft Office Excel 3 15.05.2009 20:29
If в зависимости от цвета ячейки tae1980 Microsoft Office Excel 2 16.03.2009 16:19
защита листа и снятие защиты в зависимости от логина Dorvir Microsoft Office Excel 2 30.06.2008 13:24