Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Проверка наличия листа в книге Добавлено: 02.07.08 18:43  

Автор вопроса:  Юра
Всем привет! Есть такая проблемка. Программа в процессе работы обращается к листам в книге. Но вот в чем дело. Ни в каждой книге есть лист с заданным именем. Поэтому на строке Sheets(.....).Select выдается ошибка, что лист не найден. Вполне логично. Но как сделать так, чтоб прогрмма сначало проверила есть ли лист с таким именем и по результатам проверки выполняла то или иное действие. Короче говоря, как узнать,есть ли лист с конкретным именем в книге до того как выскочет сообщение об ошибке.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Boron



Вопросов: 5
Ответов: 12
 Профиль | | #1 Добавлено: 03.07.08 00:07
Только хотел создать тему с немного другой проблемой, но сутью той же. :)

Вообщем присоединяюсь - кто может подсказать решение проблемы проверки листа на существование? Часа два голову ломаю, ничего дельного не выходит. :(

Ответить

Номер ответа: 2
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #2 Добавлено: 03.07.08 07:04
Function SheetExists(MySheet As String) As Boolean
  Dim obj As Object
  On Error GoTo ErrorHandler:
  Set obj = Sheets(MySheet)
  SheetExists = True
  Exit Function
ErrorHandler:
  SheetExists = False
End Function

Ответить

Номер ответа: 3
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #3
Добавлено: 03.07.08 20:59
    А был ещё более примитивный способ, но длиннее — проверить все листы в книги, обращаясь к ним по индексу. Здесь можно и не просто "существует или нет", а проверить и на какие-либо условия.

Ответить

Номер ответа: 4
Автор ответа:
 Boron



Вопросов: 5
Ответов: 12
 Профиль | | #4 Добавлено: 03.07.08 22:29
Jasmin, спасибо за ответ!

ADSemenov.ru, если не трудно, не мог бы написать этот вариант?

Ответить

Номер ответа: 5
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #5
Добавлено: 04.07.08 00:10
    Я написал, но не через индекс, а через просто коллекцию листов. Но, во всяком случае, через объект "s" Вам доступны все свойства листа, включая его содержимое. :)

  Dim s As Worksheet
  For Each s In Worksheets
    MsgBox s.Index
  Next


    Если захотите через индекс, то количество всех листов доступно через Worksheets.Count.

Ответить

Номер ответа: 6
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #6
Добавлено: 04.07.08 00:11
    Похоже, получается даже не длиннее, чем у предыдущего автора. :)

Ответить

Номер ответа: 7
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #7 Добавлено: 04.07.08 06:50
Каждый выбирает удобное для него решение. :-)))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам