как проверить существование листа с заданным именем?
Пользователь
Сообщений: Регистрация: 01.01.1970
18.03.2010 15:35:46
У меня макрос должен копировать лист, вставлять, а затем переименовывать в определенное название. Подскажите, пожалуйста, как сделать так, что перед этим, была проверка, существует ли уже лист с этим названием?
Guest
Гость
18.03.2010 15:39:05
for each ws in sheets.collection if newws=ws.name then next
Пользователь
Сообщений: Регистрация: 01.01.1970
18.03.2010 15:42:54
{quote}{login=}{date=18.03.2010 03:39}{thema=}{post}for each ws in sheets.collection if newws=ws.name then next{/post}{/quote}
А не подскажите, как правильно это добавить? Как не пытаюсь, ошибки выдает(
У меня сейчас:
On Error Resume Next Sheets("Прайс лист").Select Sheets("Прайс лист").Copy Before:=Sheets(1) Sheets("Прайс лист(2)").Select Sheets("Прайс лист(2)").Name = "Бланк заказа" Sheets("Бланк заказа").Select
Пользователь
Сообщений: Регистрация: 22.12.2012
18.03.2010 16:29:24
Зачем столько селектов?
Sub tt() Sheets("Прайс лист").Copy Before:=Sheets(1) Sheets(1).Name = "Бланк заказа" Sheets("Бланк заказа").Select End Sub
Пользователь
Сообщений: Регистрация: 01.01.1970
18.03.2010 16:39:22
{quote}{login=Hugo}{date=18.03.2010 04:29}{thema=}{post}Зачем столько селектов?
Sub tt() Sheets("Прайс лист").Copy Before:=Sheets(1) Sheets(1).Name = "Бланк заказа" Sheets("Бланк заказа").Select End Sub{/post}{/quote}
А как сюда проверку вставить на то, есть ли уже такой лист или нет?
Пользователь
Сообщений: Регистрация: 01.01.1970
18.03.2010 17:00:08
Sub tt() dim sh as worksheet for each sh in worksheets if sh.name="Прайс лист" then msgbox "есть такой лист" else Sheets("Прайс лист").Copy Before:=Sheets(1) Sheets(1).Name = "Бланк заказа" Sheets("Бланк заказа").Select end if End Sub
Пользователь
Сообщений: Регистрация: 01.01.1970
18.03.2010 17:01:42
Sub tt() dim sh as worksheet for each sh in worksheets if sh.name="Бланк заказа" then msgbox "есть такой лист" exit sub end if next sh
Sheets("Прайс лист").Copy Before:=Sheets(1) Sheets(1).Name = "Бланк заказа" Sheets("Бланк заказа").Select End Sub
то есть вот так конечно)
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
18.03.2010 18:20:25
Строка Sheets("Бланк заказа").Select на мой взгляд лишняя - новый лист (копия) сам активируется.
Пользователь
Сообщений: Регистрация: 21.12.2012
18.03.2010 22:26:06
Есть такой замечательный ресурс
А это подборка вариантов определения наличия определенного листа в книге Private Function WorksheetIsExist(iName$) As Boolean '***********************************************' ' Дата создания 01/01/2005 ' ' Автор Климов Павел Юрьевич ' ' ' '***********************************************' On Error Resume Next WorksheetIsExist = IsObject(Worksheets(iName$)) End Function
Private Function WorksheetIsExist(iName$) As Boolean On Error Resume Next WorksheetIsExist = (TypeOf Worksheets(iName$) Is Worksheet) End Function
Private Function WorksheetIsExist(iName$) As Boolean On Error Resume Next WorksheetIsExist = (TypeName(Worksheets(iName$)) = "Worksheet") End Function
Private Function WorksheetIsExist(iName$) As Boolean On Error Resume Next WorksheetIsExist = (VarType(Worksheets(iName$)) = vbObject) End Function
Private Function WorksheetIsExist(iName$) As Boolean On Error Resume Next WorksheetIsExist = Len(Worksheets(iName$).Name) > 0 End Function
Private Function WorksheetIsExist(iName$) As Boolean On Error Resume Next WorksheetIsExist = Worksheets(iName$).Index > 0 End Function
Пример вызова любой из вышеопубликованных авторских функций :
Private Sub Test() MsgBox WorksheetIsExist("Имя_Рабочего_Листа") End Sub