Страницы: 1
RSS
Ошибка Run-time error '9'
 
Добрый вечер.  
Помогитеобойти ошибку.  
Макрос выбирает лист имя которого указано в ячейке С9 и удаляет лист,также в столбце А выбирает значение (имя листа, которое указано в ячейке С9) и удаляет и столбца А ячейку с этим значением.  
Все отлично работает, однако если в ячейке С9 указано имя несуществующего листа вылезает ошибка.  
Вопрос? Как сделать, чтобы выполнение макроса останавливалось, сообщение об ошибке на появлялось.  
Вот код:  
 
Private Sub CommandButton2_Click()  
Sheets(Range("C9").Value).Select  
Application.DisplayAlerts = False  
ActiveWindow.SelectedSheets.Delete  
       Sheets("Лист1").Select  
       Columns("A:A").Select  
           Selection.Find(What:=(Range("C9").Value), After:=ActiveCell, LookIn:=xlFormulas, _  
           LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _  
           MatchCase:=False, SearchFormat:=False).Activate  
           ActiveCell.Delete  
               Range("C5").Select  
End Sub
 
Делал на коленке, не проверял. Пробуйте.  
Private Sub CommandButton2_Click()  
Application.DisplayAlerts = False  
on error resume next  
Sheets(Range("C9").Value).Delete  
Sheets("Лист1").Columns("A:A").Find(What:=(Range("C9").Value), After:=ActiveCell, LookIn:=xlFormulas, _  
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _  
MatchCase:=False, SearchFormat:=False).Activate  
ActiveCell.Delete  
Range("C5").Select  
Application.DisplayAlerts = true    
End Sub
Я сам - дурнее всякого примера! ...
 
Спасибо!  
Этим методом я попытался воспользоваться сразу, однако получается что:  
on error resume next  
передает управление  
ActiveCell.Delete  
и происходит удаление любой активной ячейки где установлен курсор
 
А что Вы хотите, без Вашего примера гадать... Так можете долго прождать. Ставьте дальше проверку на err.
Я сам - дурнее всякого примера! ...
 
ну так выйдите вообще из процедуры при ошибке  
If Err.Number <> 0 Then Err.Clear: Exit Sub  
следущей строкой после on error resume next
Спасибо
 
Private Sub CommandButton2_Click()  
   On Error Resume Next: Dim sh As Worksheet  
   Set sh = Sheets(Range("C9").Value): If Err Then Exit Sub  
   Application.DisplayAlerts = False: sh.Delete: Application.DisplayAlerts = True  
   Columns("A:A").Find(What:=(Range("C9").Value), LookAt:=xlPart).Delete  
End Sub
Страницы: 1
Читают тему
Наверх
Loading...