Страницы: 1
RSS
как проверить существование листа с заданным именем?
 
У меня макрос должен копировать лист, вставлять, а затем переименовывать в определенное название.  
Подскажите, пожалуйста, как сделать так, что перед этим, была проверка, существует ли уже лист с этим названием?
 
for each ws in sheets.collection  
if newws=ws.name then  
next
 
{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
 
Зачем столько селектов?  
 
Sub tt()  
Sheets("Прайс лист").Copy Before:=Sheets(1)  
Sheets(1).Name = "Бланк заказа"  
Sheets("Бланк заказа").Select  
End Sub
 
{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}  
 
А как сюда проверку вставить на то, есть ли уже такой лист или нет?
 
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
 
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  
 
то есть вот так конечно)
 
Строка Sheets("Бланк заказа").Select на мой взгляд лишняя - новый лист (копия) сам активируется.
 
Есть такой замечательный ресурс  
http://msoffice.nm.ru/faq/macros.htm  
А это подборка вариантов определения наличия определенного листа в книге  
Private Function WorksheetIsExist(iName$) As Boolean  
'***********************************************'  
'   Дата создания 01/01/2005                    '  
'   Автор Климов Павел Юрьевич                  '  
'   http://www.msoffice.nm.ru                   '  
'***********************************************'    
   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
Страницы: 1
Читают тему
Наверх