Ошибка времени выполнения VBA 9, если имя листа не совпадает с целевым именем листа - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть следующий код, который преобразует листы Excel с указанными именами c листов в PDF, а затем зацикливается в папке. Пользователь может ввести имя инструмента в инструмент для кода до l oop для. Однако, если имя листа неверно или не существует, отображается ошибка времени выполнения 9: нижний индекс выходит за пределы диапазона. Вместо этой ошибки я хотел бы получить MsgBox и затем выйти из Sub. Я попытался использовать метод On Error GoTo, который работает, когда код не соответствует имени листа в ячейке ссылки и показывает соответствующее сообщение. Однако, когда вставлено правильное имя листа, оно показывает это сообщение и также не выполняет код.

Как я могу это исправить, чтобы я получал сообщение только тогда, когда код не находит имя листа, и в случае, если это так, он завершает код?

Это где я сталкиваюсь с вопросом

On Error GoTo ErrorExit

'Even when the cell value matches the sheet's name, I still get an error and it exist the sub
Set reportSheet = Sheets(reportSheetName)   

ErrorExit:
MsgBox "Incorrect Sheet Name or It Does Not Exist"
Exit Sub
Dim settingsSheet As Worksheet       'Source
Dim reportSheet As Worksheet        'To convert to PDF
Dim targetColumnsRange As Range     'feeds from source
Dim targetRowsRange As Range
Dim reportSheetName As String       'source sheet with the target's sheet name
Dim reportColumnsAddr As String
Dim reportRowsAddr As String
    ' Set a reference to the settings sheet

Set settingsSheet = ThisWorkbook.Worksheets("Sheet1")   ' source

    ' Gather the report sheet's name

reportSheetName = settingsSheet.Range("C7").Value       ' good

On Error GoTo ErrorExit

'If this doesnt match, display the message and exit sub, else continue the sub
Set reportSheet = Sheets(reportSheetName)   

ErrorExit:
MsgBox "Incorrect Sheet Name or It Does Not Exist"
Exit Sub

1 Ответ

2 голосов
/ 21 февраля 2020

Вы можете сделать это так:

On Error Resume Next  'ignore errors
Set reportSheet = Sheets(reportSheetName) 
On Error Goto 0       'stop ignoring errors 

If reportSheet is nothing then
     Msgbox "no sheet named '" & reportSheetName & "' in this workbook!"
Else
     'all good
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...