Vba как проверить существует ли лист

от admin

Vba как проверить существует ли лист

Как проверить, существует ли лист в книге?

Когда у вас есть десятки рабочих листов или даже сотни рабочих листов в рабочей книге, и вы хотите найти или проверить, существует ли лист в этой рабочей книге, в общем, это может быть огромной работой. Теперь я представляю код VBA и удобный инструмент для быстрой проверки наличия листа в рабочей книге.

Проверьте, существует ли лист и переключитесь на него с помощью Kutools for Excel

Проверьте, существует ли лист в книге

Выполните следующие действия, чтобы скопировать код VBA и запустить его, чтобы проверить, существует ли лист в текущей книге.

1. Нажмите Alt + F11 для отображения Microsoft Visual Basic для приложений окно.

2. В окне нажмите Вставить > Модули чтобы отобразить новое окно модуля, затем скопируйте следующий код VBA в окно модуля.

VBA: проверьте, существует ли лист в книге.

3. Сохраните этот код, вернитесь на лист и выберите пустую ячейку, чтобы ввести эту формулу. = CheckSheet («Shee1») (Sheet1 указывает имя листа, которое вы хотите проверить, существует ли он) в него, нажмите Enter кнопка, НЕПРАВДА указывает, что этот лист не существует, и TURE указывает, что он существует в текущей книге.

Проверьте, существует ли лист, и переключитесь на него с помощью Kutools for Excel с VBA

С помощью указанной выше функции вы просто можете проверить, существует ли лист, что также немного сложно. Однако с Kutools for Excel, в области навигации перечислены все имена листов, которые поддерживают прокрутку, чтобы найти лист, или фильтровать имя листа, чтобы найти лист, и при необходимости вы можете щелкнуть имя листа, чтобы быстро переключиться на лист после поиска.

После бесплатная установка Kutools for Excel, сделайте следующее:

1. включите книгу, в которой вы хотите проверить имя листа, если оно существует, а затем щелкните Кутулс > Навигация. Смотрите скриншот
:документ проверьте, существует ли лист 1

2. Затем на всплывающей панели щелкните Рабочая тетрадь и лист кнопку, чтобы развернуть панель, вы можете увидеть весь список имен листов на панели, вы можете прокрутить, чтобы найти имена листов.
doc kutools панель навигации 2

3. Или вы можете проверить Фильтр Нажмите кнопку, затем введите ключевые слова имени листа, который вы хотите проверить, затем указанное имя листа будет списком, щелкните имя листа, затем оно перейдет к листу.
doc kutools панель навигации 3

VBA Excel. Проверка существования листа

Пользовательская функция VBA Excel для проверки существования листа в рабочей книге путем определения результата присвоения ссылки на него объектной переменной. Присвоение состоялось (SheetExist = True) – искомый лист существует, произошла ошибка и присвоение не состоялось (SheetExist = False) – лист не существует.

Аргументы функции SheetExist:

  • WbName – имя открытой рабочей книги, в которой ищется лист.
  • ShName – имя искомого рабочего листа.

Перебор существующих листов циклом

Проверка существования рабочего листа в книге Excel с помощью перебора существующих листов циклом VBA и сравнения их имен с именем искомого листа. Совпадение найдено (SheetExist = True) – искомый лист существует, совпадение не найдено (SheetExist = False) – лист не существует.

Test or check if sheet exists

Basically I loop through all sheets in the origin workbook then set destsheet in the destination workbook to the sheet with the same name as the currently iterated one in the origin workbook.

Читать:
Почему страница сама прокручивается вниз

How can I test if that sheet exists? Something like:

BigBen's user avatar

23 Answers 23

Some folk dislike this approach because of an «inappropriate» use of error handling, but I think it’s considered acceptable in VBA. An alternative approach is to loop though all the sheets until you find a match.

darcyy's user avatar

Tim Williams's user avatar

If you are specifically interested in worksheets only, you can use a simple Evaluate call:

Rory's user avatar

You don’t need error handling in order to accomplish this. All you have to do is iterate over all of the Worksheets and check if the specified name exists:

ke1v3y's user avatar

I wrote this one:

As checking for members of a collection is a general problem, here is an abstracted version of @Tim’s answer:

This function can be used with any collection like object ( Shapes , Range , Names , Workbooks , etc.).

To check for the existence of a sheet, use If Contains(Sheets, "SheetName") .

shA.t's user avatar

Peter Albert's user avatar

Corrected: Without error-handling:

Shai Alon's user avatar

In case anyone wants to avoid VBA and test if a worksheet exists purely within a cell formula, it is possible using the ISREF and INDIRECT functions:

This will return TRUE if the workbook contains a sheet called SheetName and FALSE otherwise.

Compact wsExists function (without reliance on Error Handling!)

Here’s a short & simple function that doesn’t rely on error handling to determine whether a worksheet exists (and is properly declared to work in any situation!)

Example Usage:

The following example adds a new worksheet named myNewSheet , if it doesn’t already exist:

More Information:

  • MSDN : For Each … Next Statement (VBA)
  • MSDN : Exit Statement (VBA)
  • MSDN : Comparison Operators (VBA)

ashleedawg's user avatar

My solution looks much like Tims but also works in case of non-worksheet sheets — charts

Many years late, but I just needed to do this and didn’t like any of the solutions posted. So I made one up, all thanks to the magic of (SpongeBob rainbow hands gesture) «Evaluate()»!

Returns TRUE if Sheet does NOT exist; FALSE if sheet DOES exist. You can substitute whatever range you like for «1:1», but I advise against using a single cell, cuz if it contains an error (eg, #N/A), it will return True.

Комментарии

On Error GoTo errНandle:
Set c = sheets(sSName)
‘ Альтернативный вариант :
Worksheets(sSName).Cells(1, 1) = Worksheets(sSName).Cells(1, 1)
IsWorkSheetExist = True
Exit Function
errНandle:
IsWorkSheetExist = False
End Function

Рublic Function IsWorkSheetExist(sSName As String) As Boolean
Dim c As Object

On Error GoTo errНandle:
Set c = sheets(sSName)
‘ Альтернативный вариант :
Worksheets(sSName).Cells(1, 1) = Worksheets(sSName).Cells(1, 1)
IsWorkSheetExist = True
Exit Function
errНandle:
IsWorkSheetExist = False
End Function

Только вот ошибочка: Set c = sheets(sName) — не правильно правильно: Set c = sheets(sSName). Или следующий код:
‘ Function IsWorkSheetExist
‘ Проверяет, имеется ли в активной рабочей книге лист с именем sSName.
‘ В случае успеха возвращает True, иначе — False

Рublic Function IsWorkSheetExist(sSName As String) As Boolean
Dim c As Object

On Error GoTo errНandle:
Set c = sheets(sSName)
‘ Альтернативный вариант :
Worksheets(sSName).Cells(1, 1) = Worksheets(sSName).Cells(1, 1)
IsWorkSheetExist = True
Exit Function
errНandle:
IsWorkSheetExist = False
End Function

Похожие статьи