2015-03-19 3 views
0

Как закрыть листы, если они не совпадают, или если я нажму кнопку «Отменить». Если я нажму «Отменить», он продолжит возвращать меня, чтобы войти в рабочие листы. Вот мой код.Как закрыть функцию рабочего листа в vba?

Function WorksheetExists(WSName As String) As Boolean 
    On Error Resume Next 
    WorksheetExists = Worksheets(WSName).Name = WSName 


    On Error GoTo 0 
    End Function 

    Do Until WorksheetExists(shname) 
    shname = InputBox("Enter sheet name") 
     If Not WorksheetExists(shname) Then 
     MsgBox shname & " doesn't exist!", vbExclamation 

     Else 
     WSName = shname 

     Sheets(shname).Select 
     End If 
     Loop 

ответ

0

Вы должны проверить пустой ответ. Он продолжает цикл, поскольку у вас нет пустой строки в качестве имени листа.

Do Until WorksheetExists(shname) 
     shname = InputBox("Enter sheet name") 
     If shname = "" Then 
      Exit Do 
     ElseIf Not WorksheetExists(shname) Then 
      MsgBox shname & " doesn't exist!", vbExclamation 
     Else 
      WSName = shname 
      Sheets(shname).Select 
     End If 
    Loop 

или

Do Until WorksheetExists(shname) Or shname = "" 
    shname = InputBox("Enter sheet name") 
    If Not WorksheetExists(shname) Then 
     MsgBox shname & " doesn't exist!", vbExclamation 
    Else 
     WSName = shname 
     Sheets(shname).Select 
    End If 
Loop 
Смежные вопросы