Поиск листа по названию

Программирование на Visual Basic for Applications
Sandra_83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 11.10.2006 (Ср) 15:32

Поиск листа по названию

Сообщение Sandra_83 » 15.11.2006 (Ср) 17:46

Подскажите как сделать...

Я по нажатию на кнопку добавляю листы с названием, которое соответстует определенной ячейке ("Company").
Вопрос в том, как сделать проверку, что если лист с таким же названием как ячейка "Company" уже существет, то выдавалась бы ошибка. Чтобы исключить возможность добавления листов с одинаковыми названиями.

Вот код, который сейчас:

Sub CopySheet()
Application.ScreenUpdating = False
On Error Resume Next
'Sheets("Шаблон").Visible = True
Worksheets("Шаблон").Select
Worksheets("Шаблон").Copy After:=Worksheets("Данные")
Worksheets("Шаблон (2)").Range("CompName").Value = Range("Company").Value
Worksheets("Шаблон (2)").Name = Range("Company").Value
'Sheets("Шаблон").Visible = False
Worksheets("Данные").Activate

Application.ScreenUpdating = True
End Sub

Genyaa
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 17.10.2006 (Вт) 13:46

Сообщение Genyaa » 15.11.2006 (Ср) 22:35

Можно сделать так (проверяя все имена листов):

Код: Выделить всё
Flag = False
For each nn in Sheets
   If nn.Name = Range("Company").Value Then
      Flag = True
      Exit For
   End If
Next nn
If Flag Then
   MsgBox "Лист с таким именем уже существует!"
   Exit Sub
End If


Или так (делая попытку обратиться к листу с предполагаемым именем - если будет успешно - то существует):

Код: Выделить всё
On Error Resume Next
Err.Clear
AnyThing = Worksheets(Range("Company").Value).Name
If Err.Number = 0 Then
    MsgBox "Лист с таким именем уже существует!"
    Exit Sub
End If
Err.Clear
Всякое решение плодит новые проблемы.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Re: Поиск листа по названию

Сообщение Nicky » 16.11.2006 (Чт) 8:57

Придирки:
Sandra_83 писал(а):
Код: Выделить всё
Worksheets("Шаблон").Select 'это необязательно
Worksheets("Шаблон").Copy After:=Worksheets("Данные")

Sandra_83 писал(а):
Код: Выделить всё
Worksheets("Шаблон (2)").Range("CompName").Value = Range("Company").Value

А если лист "Шаблон (2)" существовал до копирования?
Код: Выделить всё
Worksheets("Шаблон").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Range("Company").Value
Sheets(Sheets.Count).Range("CompName").Value = Range("Company").Value

Sandra_83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 11.10.2006 (Ср) 15:32

Сообщение Sandra_83 » 16.11.2006 (Чт) 16:22

Спасибки всем большое


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 101

    TopList