У меня макрос должен копировать лист, вставлять, а затем переименовывать в определенное название. Подскажите, пожалуйста, как сделать так, что перед этим, была проверка, существует ли уже лист с этим названием?
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
Есть такой замечательный ресурс 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