Vba excel как узнать если лист

Проверка существования листа в рабочей книге Excel из кода VBA с помощью присвоения его объектной переменной или перебора существующих листов циклом.

Присвоение листа объектной переменной

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

Function SheetExist(WbName As String, ShName As String) As Boolean

Dim mySheet As Worksheet

    On Error Resume Next

        Set mySheet = Workbooks(WbName).Sheets(ShName)

    SheetExist = Not mySheet Is Nothing

End Function

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

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

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

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

Function SheetExist(WbName As String, ShName As String) As Boolean

Dim mySheet As Worksheet

    For Each mySheet In Workbooks(WbName).Sheets

        If mySheet.Name = ShName Then

            SheetExist = True

            Exit Function

        End If

    Next

End Function

Пример проверки существования листа

Пример проверки существования искомого листа в рабочей книге Excel с помощью пользовательской функции VBA SheetExist:

Sub Primer()

    If SheetExist(ThisWorkbook.Name, «Лист1») Then

        MsgBox «Лист существует»

    Else

        MsgBox «Лист не существует»

    End If

End Sub

Имя сторонней открытой книги должно быть указано вместе с расширением:

...

    If SheetExist(«Книга2.xlsm», «Лист2») Then

...

Обратите внимание, если книга, имя которой указано в параметре WbName закрыта или не существует, будет сгенерирована ошибка.

Чтобы функция проверки существования рабочего листа SheetExist была доступна из модуля любой книги Excel на вашем компьютере, разместите ее в Личной книге макросов.


Хитрости »

1 Май 2011              136635 просмотров


Как узнать существует ли лист в книге?

Довольно часто при добавлении листов в книгу кодом необходимо удостовериться существует ли уже лист с таким именем или же нет. Т.к. если уже существует, то попытка создать лист с таким же именем неизбежно приведет к ошибке. Можно, конечно, поставить обработчик ошибки On Error.

Sub Add_New_Sheet()
    On Error Resume Next
    Sheets.Add(, Sheets(Sheets.Count)).Name = "Новый лист"
End Sub

Но тогда, если лист с таким именем уже существует, будет создан лист со следующим порядковым номером(типа Лист4). А этого в большинстве случаев не надо, т.к. обычно планируется все же либо создать лист с нужным именем, либо не создавать вовсе.
Я обычно проверяю так:

Sub Add_New_Sheet()
    Dim wsSh As Worksheet
    On Error Resume Next
    Set wsSh = Sheets("Новый лист")
    If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = "Новый лист"
    'здесь можно либо активировать лист, либо производить еще какие действия
    'wsSh.Activate
End Sub

Если предполагается использовать такую проверку более одного раза в коде, то имеет смысл вынести проверку в отдельную функцию

Function Sh_Exist(wb As Workbook, sName As String) As Boolean
    Dim wsSh As Worksheet
    On Error Resume Next
    Set wsSh = wb.Sheets(sName)
    Sh_Exist = Not wsSh Is Nothing
End Function

Функция проверяет наличие листа в указанной книге и возвращает True, если лист есть в книге и False, если листа нет.
wb — объект Workbook, наличие листа в которой надо проверить.
sName — имя листа, наличие которого необходимо проверить.
Код функции Sh_Exist необходимо поместить в стандартный модуль и тогда для проверки наличия листа достаточно будет одной строки кода:

Sub Add_New_Sheet()
    If Not Sh_Exist(ActiveWorkbook, "Новый лист") Then
        ActiveWorkbook.Sheets.Add(, ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = "Новый лист"
    End If
End Sub

«Новый лист» — вместо этого текста указывается имя листа, наличие которого необходимо проверить.
Если проверять надо не в активной книге, а в какой-либо другой, то вместо ActiveWorkbook необходимо указать эту книгу. Например, если книга называется «Отчет.xlsx», то код будет таким:

Sub Add_New_Sheet()
    If Not Sh_Exist(Workbooks("Отчет.xlsx"), "Новый лист") Then
        Workbooks("Отчет.xlsx").Sheets.Add(, Workbooks("Отчет.xlsx").Sheets(Workbooks("Отчет.xlsx").Sheets.Count)).Name = "Новый лист"
    End If
End Sub

Хотя в данном случае практичнее выделить отдельную переменную:

Sub Add_New_Sheet()
    Dim wbCheck As Workbook
    Set wbCheck = Workbooks("Отчет.xlsx")
    If Not Sh_Exist(wbCheck, "Новый лист") Then
        wbCheck.Sheets.Add(, wbCheck.Sheets(wbCheck.Sheets.Count)).Name = "Новый лист"
    End If
End Sub

Можно еще упростить и конструкцию With использовать, но это уже другая тема :)

Также см.:
Как проверить открыта ли книга?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Dim wkbkdestination As Workbook
Dim destsheet As Worksheet

For Each ThisWorkSheet In wkbkorigin.Worksheets 
    'this throws subscript out of range if there is not a sheet in the destination 
    'workbook that has the same name as the current sheet in the origin workbook.
    Set destsheet = wkbkdestination.Worksheets(ThisWorkSheet.Name) 
Next

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:

If wkbkdestination.Worksheets(ThisWorkSheet.Name) Then 

BigBen's user avatar

BigBen

43.9k6 gold badges27 silver badges40 bronze badges

asked Jul 14, 2011 at 3:23

yse's user avatar

1

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.

Function WorksheetExists(shtName As String, Optional wb As Workbook) As Boolean
    Dim sht As Worksheet

    If wb Is Nothing Then Set wb = ThisWorkbook
    On Error Resume Next
    Set sht = wb.Sheets(shtName)
    On Error GoTo 0
    WorksheetExists = Not sht Is Nothing
End Function

darcyy's user avatar

darcyy

5,2165 gold badges27 silver badges41 bronze badges

answered Jul 14, 2011 at 4:27

Tim Williams's user avatar

Tim WilliamsTim Williams

150k8 gold badges96 silver badges124 bronze badges

14

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

Function WorksheetExists(sName As String) As Boolean
    WorksheetExists = Evaluate("ISREF('" & sName & "'!A1)")
End Function

answered Feb 12, 2015 at 9:25

Rory's user avatar

RoryRory

32.4k5 gold badges31 silver badges34 bronze badges

10

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:

Dim exists As Boolean

For i = 1 To Worksheets.Count
    If Worksheets(i).Name = "MySheet" Then
        exists = True
    End If
Next i

If Not exists Then
    Worksheets.Add.Name = "MySheet"
End If

ke1v3y's user avatar

answered Mar 27, 2013 at 20:21

fbonetti's user avatar

fbonettifbonetti

6,5823 gold badges33 silver badges32 bronze badges

1

I wrote this one:

Function sheetExist(sSheet As String) As Boolean
On Error Resume Next
sheetExist = (ActiveWorkbook.Sheets(sSheet).Index > 0)
End Function

answered Apr 16, 2018 at 19:24

AOBR's user avatar

AOBRAOBR

2792 silver badges4 bronze badges

3

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

Function Contains(objCollection As Object, strName as String) As Boolean
    Dim o as Object
    On Error Resume Next
    set o = objCollection(strName)
    Contains = (Err.Number = 0)
    Err.Clear
 End Function

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

shA.t

16.4k5 gold badges53 silver badges111 bronze badges

answered Jan 24, 2013 at 20:11

Peter Albert's user avatar

Peter AlbertPeter Albert

16.8k4 gold badges66 silver badges88 bronze badges

2

Corrected:
Without error-handling:

Function CheckIfSheetExists(SheetName As String) As Boolean
      CheckIfSheetExists = False
      For Each WS In Worksheets
        If SheetName = WS.name Then
          CheckIfSheetExists = True
          Exit Function
        End If
      Next WS
End Function

answered Feb 17, 2015 at 14:07

Shai Alon's user avatar

Shai AlonShai Alon

95013 silver badges20 bronze badges

0

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:

=ISREF(INDIRECT("SheetName!A1"))

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

answered Jan 7, 2016 at 6:33

VirtualMichael's user avatar

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!)

Function wsExists(wsName As String) As Boolean
    Dim ws: For Each ws In Sheets
    wsExists = (wsName = ws.Name): If wsExists Then Exit Function
    Next ws
End Function

Example Usage:

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

If Not wsExists("myNewSheet") Then Sheets.Add.Name = "myNewSheet"

More Information:

  • MSDN : For EachNext Statement (VBA)
  • MSDN : Exit Statement (VBA)
  • MSDN : Comparison Operators (VBA)

answered May 11, 2018 at 16:56

ashleedawg's user avatar

ashleedawgashleedawg

20k8 gold badges73 silver badges104 bronze badges

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

Public Function SheetExists(strSheetName As String, Optional wbWorkbook As Workbook) As Boolean
    If wbWorkbook Is Nothing Then Set wbWorkbook = ActiveWorkbook 'or ThisWorkbook - whichever appropriate
    Dim obj As Object
    On Error GoTo HandleError
    Set obj = wbWorkbook.Sheets(strSheetName)
    SheetExists = True
    Exit Function
HandleError:
    SheetExists = False
End Function

.

answered Aug 3, 2014 at 15:43

uildriks's user avatar

uildriksuildriks

511 silver badge1 bronze badge

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()»!

Evaluate("IsError(" & vSheetName & "!1:1)")

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.

answered Aug 1, 2016 at 16:37

X37V's user avatar

1

Short and clean:

Function IsSheet(n$) As Boolean
    IsSheet = Not IsError(Evaluate("'" & n & "'!a1"))
End Function

Roy Latham's user avatar

answered Apr 3, 2020 at 4:13

Excel Hero's user avatar

Excel HeroExcel Hero

14.1k4 gold badges31 silver badges39 bronze badges

0

Put the test in a function and you will be able to reuse it and you have better code readability.

Do NOT use the «On Error Resume Next» since it may conflict with other part of your code.

Sub DoesTheSheetExists()
    If SheetExist("SheetName") Then
        Debug.Print "The Sheet Exists"
    Else
        Debug.Print "The Sheet Does NOT Exists"
    End If
End Sub

Function SheetExist(strSheetName As String) As Boolean
    Dim i As Integer

    For i = 1 To Worksheets.Count
        If Worksheets(i).Name = strSheetName Then
            SheetExist = True
            Exit Function
        End If
    Next i
End Function

answered Jan 9, 2014 at 9:26

Martin Carlsson's user avatar

Martin CarlssonMartin Carlsson

4512 gold badges6 silver badges17 bronze badges

Public Function WorkSheetExists(ByVal strName As String) As Boolean
   On Error Resume Next
   WorkSheetExists = Not Worksheets(strName) Is Nothing
End Function

sub test_sheet()

 If Not WorkSheetExists("SheetName") Then
 MsgBox "Not available"
Else MsgBox "Available"
End If

End Sub

answered Aug 5, 2013 at 10:56

M1NT's user avatar

M1NTM1NT

3861 gold badge4 silver badges13 bronze badges

Why not just use a small loop to determine whether the named worksheet exists? Say if you were looking for a Worksheet named «Sheet1» in the currently opened workbook.

Dim wb as Workbook
Dim ws as Worksheet

Set wb = ActiveWorkbook

For Each ws in wb.Worksheets

    if ws.Name = "Sheet1" then
        'Do something here
    End if

Next

answered Jan 16, 2015 at 7:55

ScottMcC's user avatar

ScottMcCScottMcC

3,9441 gold badge27 silver badges35 bronze badges

    For Each Sheet In Worksheets
    If UCase(Sheet.Name) = "TEMP" Then
    'Your Code when the match is True
        Application.DisplayAlerts = False
        Sheet.Delete
        Application.DisplayAlerts = True
    '-----------------------------------
    End If
Next Sheet

answered Mar 28, 2017 at 12:24

Shrikant's user avatar

ShrikantShrikant

5234 silver badges15 bronze badges

If you are a fan of WorksheetFunction. or you work from a non-English country with a non-English Excel this is a good solution, that works:

WorksheetFunction.IsErr(Evaluate("'" & wsName & "'!A1"))

Or in a function like this:

Function WorksheetExists(sName As String) As Boolean
    WorksheetExists = Not WorksheetFunction.IsErr(Evaluate("'" & sName & "'!A1"))
End Function

answered May 23, 2017 at 9:25

Vityata's user avatar

VityataVityata

42.4k8 gold badges55 silver badges98 bronze badges

Change «Data» to whatever sheet name you’re testing for…

On Error Resume Next 

Set DataSheet = Sheets("Data")

If DataSheet Is Nothing Then

     Sheets.Add(after:=ActiveSheet).Name = "Data"
     ''or whatever alternate code you want to execute''
End If

On Error GoTo 0

Dan Lowe's user avatar

Dan Lowe

49.9k19 gold badges123 silver badges111 bronze badges

answered Jul 10, 2017 at 16:54

gth826a's user avatar

gth826agth826a

1011 silver badge4 bronze badges

Without any doubt that the above function can work, I just ended up with the following code which works pretty well:

Sub Sheet_exist ()
On Error Resume Next
If Sheets("" & Range("Sheet_Name") & "") Is Nothing Then
    MsgBox "doesnt exist"
Else
    MsgBox "exist"
End if
End sub

Note: Sheets_Name is where I ask the user to input the name, so this might not be the same for you.

Cody Gray's user avatar

Cody Gray

237k50 gold badges488 silver badges570 bronze badges

answered Jun 28, 2016 at 2:24

MAx Segura's user avatar

I did another thing: delete a sheet only if it’s exists — not to get an error if it doesn’t:

Excel.DisplayAlerts = False 
Dim WS
For Each WS In Excel.Worksheets
    If WS.name = "Sheet2" Then
        Excel.sheets("Sheet2").Delete
        Exit For
    End If
Next
Excel.DisplayAlerts = True

answered Feb 17, 2015 at 15:22

Shai Alon's user avatar

Shai AlonShai Alon

95013 silver badges20 bronze badges

I use this function to check and return a new sheet name if needed. WSname is the desired worksheet name and WBCur is the workbook you would like to check in. I use this because there is no need for error handling and can call it whenever i am creating a new worksheet.

Public Function CheckNewWorksheetName(WSName As String, WBCur As Workbook) 'Will return New Name if needed
    Dim NewWSNum As Long, A As Integer, B As Integer, WorksheetFound As Boolean
    NewWSNum = 1
    WorksheetFound = False
    For A = 1 To WBCur.Worksheets.Count
        If WBCur.Worksheets(A).Name = WSName Then
            A = WBCur.Worksheets.Count
            WorksheetFound = True
        End If
    Next A
    
    If WorksheetFound = False Then
        CheckNewWorksheetName = WSName
    Else
        Do While WorksheetFound = True
            WorksheetFound = False
            For B = 1 To WBCur.Worksheets.Count
                If WBCur.Worksheets(B).Name = WSName & "_" & NewWSNum Then
                    B = WBCur.Worksheets.Count
                    WorksheetFound = True
                    NewWSNum = NewWSNum + 1
                End If
            Next B
        Loop
        CheckNewWorksheetName = WSName & "_" & NewWSNum
    End If
End Function

answered Jul 14, 2021 at 19:51

Alex Johnson's user avatar

I came up with an easy way to do it, but I didn’t create a new sub for it. Instead, I just «ran a check» within the sub I was working on. Assuming the sheet name we’re looking for is «Sheet_Exist» and we just want to activate it if found:

Dim SheetCounter As Integer

SheetCounter = 1

Do Until Sheets(SheetCounter).Name = "Sheet_Exist" Or SheetCounter = Sheets.Count + 1
 SheetCounter = SheetCounter +1
Loop
If SheetCounter < Sheets.Count + 1 Then
 Sheets("Sheet_Exist").Activate
Else
 MsgBox("Worksheet ""Sheet_Exist"" was NOT found")
End If

I also added a pop-up for when the sheet doesn’t exist.

answered Jun 14, 2018 at 15:13

imjordy23's user avatar

I know it is an old post, but here is another simple solution that is fast.

Public Function worksheetExists(ByVal wb As Workbook, ByVal sheetNameStr As String) As Boolean

On Error Resume Next
worksheetExists = (wb.Worksheets(sheetNameStr).Name <> "")
Err.Clear: On Error GoTo 0

End Function

answered Apr 4, 2019 at 15:39

Guest's user avatar

GuestGuest

4302 silver badges4 bronze badges

I actually had a simple way to check if the sheet exists and then execute some instruction:

In my case I wanted to delete the sheet and then recreated the same sheet with the same name but the code was interrupted if the program was not able to delete the sheet as it was already deleted

Sub Foo ()

    Application.DisplayAlerts = False

    On Error GoTo instructions
    Sheets("NAME OF THE SHEET").Delete

    instructions:

    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "NAME OF THE SHEET"

End Sub

Cody Gray's user avatar

Cody Gray

237k50 gold badges488 silver badges570 bronze badges

answered Mar 7, 2014 at 14:47

chenaou's user avatar

1

От Климова П.Ю.  
Вариант I. (без ‘генерации’ ошибки)    
Option Compare Text  ‘Если Вы не  
понимаете, зачем используется эта инструкция, то оставьте её в покое  

  Private Function WorksheetIsExist(iName$) As Boolean  
‘***********************************************’  
‘   Дата создания 01/01/2005                    ‘  
‘   Автор Климов Павел Юрьевич                  ‘  
‘  

http://www.msoffice.nm.ru

                  ‘  
‘***********************************************’    
   Dim iList As Worksheet    
   For Each iList In Worksheets    
       If iList.Name = iName$ Then    
          WorksheetIsExist = True    
          Exit Function    
       End If    
   Next    
   WorksheetIsExist = False    
End Function  

  Private Function WorksheetIsExist(iName$) As Boolean  
‘***********************************************’  
‘   Дата создания 01/01/2005                    ‘  
‘   Автор Климов Павел Юрьевич                  ‘  
‘  

http://www.msoffice.nm.ru

                  ‘  
‘***********************************************’    
   Dim iList As Worksheet    
   For Each iList In Worksheets    
       If StrComp(iList.Name, iName$, vbTextCompare) = 0 Then  
          WorksheetIsExist = True  
          Exit Function  
       End If  
   Next  
   WorksheetIsExist = False  
End Function  

  Вариант II.    
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

Дабы не создавать новую тему,

В моей книге есть макросы, имеющие в своем составе формулы со ссылками на другие листы этой книги. При запуске макросов необходимо проверить книгу на соответствие имен листов (не изменил ли кто случайно). если все ОК, то запускаем другой макрос, если нет, то сообщение, какой лист нужно проверить.

воспользовался примером Busine2012, и Казанский, написал код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
   Sub ttt()
    
    'Создаём переменную, в которую поместим имя листа.
    Dim sName As String
    Dim aName As String
    
    'Создаём переменную, с помощью которой будем обращаться к нужному листу.
    Dim oSheet As Excel.Worksheet
    'Помещаем в переменные имена листов.
    sName = "ДАННЫЕ"
    aName = "РЕЗУЛЬТАТЫ"
    bName = "ИТОГИ
 
    On Error Resume Next
    
        'Присваиваем листу имя oSheet.
Set oSheet = Worksheets(sName)
  
    
        If Worksheets(sName) Is Nothing Then
            MsgBox "Проверь имя листа ДАННЫЕ.", vbCritical
   Else
    
Set oSheet = Worksheets(aName)
    
    If Worksheets(aName) Is Nothing Then
            MsgBox "проверь имя листа РЕЗУЛЬТАТЫ.", vbCritical
    Else
Set oSheet = Worksheets(bName)
    
    If Worksheets(bName) Is Nothing Then
            MsgBox "проверь имя листа ИТОГИ.", vbCritical
               Else
            MsgBox "Работа разрешена.", vbCritical  ' работа макроса
    End If
 End If
 End If
    
End Sub

Макрос работает.

Вопрос: можно ли упростить код для проверки имен листов, если число проверяемых листов на правильность имени будет больше 10 (без ухудшения производительности)?

Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя..

Заранее спасибо.

Добавлено через 25 минут

Цитата
Сообщение от dmb2
Посмотреть сообщение

Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя..

Visual Basic
1
Лист1.Name="Данные"

Добавлено через 5 минут
Но код проверяет (соответственно и переименовывает неправильные листы) по одному за работу всего цикла. Хотелось бы чтобы сразу все листы проверил, и все исправил.

Добавлено через 5 минут
Возникла мысль, хотелось бы узнать мнение о целесообразности,

Может обойтись без проверки листов и сразу все листы переименовать?

Понравилась статья? Поделить с друзьями:
  • Vba excel как узнать длину массива
  • Vba excel как удалять листы
  • Vba excel как удалить часть строки
  • Vba excel как удалить умную таблицу
  • Vba excel как удалить символ в ячейке