как проверить существование листа используя Boolean?

Программирование на Visual Basic for Applications
Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

как проверить существование листа используя Boolean?

Сообщение Kim K. » 03.11.2008 (Пн) 12:39

Добрый день.
Прошу прощения, если мой вопрос покажется глупым, но я попытался обойти for i=1 to Sheets.Count в поиске существования листа с заданным именем -- с помощью Boolean
dim bool as boolean
bool = Worksheets("ааа").Activate
If bool = True Then
...
когда лист с именем "ааа" присутствует, все ок; но если листа с именем "ааа" нет, ругается.
возможно я подхожу к вопросу не с той функцией... подскажите, как можно вопрос решить.
Я програмирую совсем мало, буду очень признателен за помощь.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как проверить существование листа используя Boolean?

Сообщение iGrok » 03.11.2008 (Пн) 15:16

Как вариант - использовать обработчик ошибок On error..
label:
cli
jmp label

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 03.11.2008 (Пн) 15:39

Спасибо, iGrok, попробую.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: как проверить существование листа используя Boolean?

Сообщение Денис » 05.11.2008 (Ср) 9:16

Kim K. писал(а):буду очень признателен за помощь.

Хотел быстро привести пример с For Each но что-то не срослось, как вариант могу привести пример с массивом и book.Worksheets.Count но не буду ибо криво. Давайте подождем, что скажет KL
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 05.11.2008 (Ср) 9:44

Ок, Денис, спасибо, что обнадежили!
буду рад подождать!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Re: как проверить существование листа используя Boolean?

Сообщение KL » 05.11.2008 (Ср) 10:34

Код: Выделить всё
dim ws as worksheet
On error resume next
Set ws=worksheets("aaa")
On error goto 0
If not ws is nothing then msgbox ws.name
Последний раз редактировалось KL 05.11.2008 (Ср) 15:09, всего редактировалось 1 раз.
Привет,
KL

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 05.11.2008 (Ср) 11:05

Спасибо, KL, все работает!
можно один уточняющий вопрос?
On error resume next я нашел что значит. а что такое On error goto 0 ?

я попытался его протестить в своем тестовом модуле, и вне зависимости от того, есть ли лист "ааа" или его нет, error в этой строке не возникал... :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как проверить существование листа используя Boolean?

Сообщение alibek » 05.11.2008 (Ср) 11:53

On Error Goto 0 отключает обработку ошибок.
Lasciate ogni speranza, voi ch'entrate.

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 05.11.2008 (Ср) 11:58

alibek писал(а):On Error Goto 0 отключает обработку ошибок.
а какая же функция этого кода в вышеприведенном?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как проверить существование листа используя Boolean?

Сообщение alibek » 05.11.2008 (Ср) 12:03

Чтобы не игнорировались ошибки, если они случатся.
Lasciate ogni speranza, voi ch'entrate.

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 05.11.2008 (Ср) 12:54

alibek писал(а):Чтобы не игнорировались ошибки, если они случатся.

верно ли я понял?
Код: Выделить всё
On error resume next ' выключается реагирование на ошибку, при error действие переходит к след. команде
Set ws=worksheets("aaa")
On error goto 0 ' включается реагирование на все последующие ошибки

?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как проверить существование листа используя Boolean?

Сообщение alibek » 05.11.2008 (Ср) 13:20

Да.
Только правильнее говорить не "выключается реагирование на ошибку", а "задается обработка ошибок".
Lasciate ogni speranza, voi ch'entrate.

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 05.11.2008 (Ср) 13:40

Ок, спасибо!
меня просто немного с толку сбил ваш ответ:
alibek писал(а):On Error Goto 0 отключает обработку ошибок.
получается, что наоборот, включает... т.е. задает.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: как проверить существование листа используя Boolean?

Сообщение iGrok » 05.11.2008 (Ср) 14:04

Kim K. писал(а):Ок, спасибо!
меня просто немного с толку сбил ваш ответ:
alibek писал(а):On Error Goto 0 отключает обработку ошибок.
получается, что наоборот, включает... т.е. задает.

Нет. "Ошибка обрабатывается" - значит, что при ошибке мы выполняем какие-то действия.
"Обработка ошибок отключена" - значит, что при ошибке происходят стандартные действия. Т.е. сообщение об ошибке и прекращение выполнения кода.
label:
cli
jmp label

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: как проверить существование листа используя Boolean?

Сообщение alibek » 05.11.2008 (Ср) 14:26

Kim K. писал(а):получается, что наоборот, включает... т.е. задает.

Нет. Ошибка будет обработана в любом случае, либо рантаймом VBA (и тогда программный код аварийно завершит работу), либо программным кодом пользователя. "Отключает" следует читать, как "отключает программную обработку ошибок".
Lasciate ogni speranza, voi ch'entrate.

Kim K.
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 31.10.2008 (Пт) 16:43

Re: как проверить существование листа используя Boolean?

Сообщение Kim K. » 05.11.2008 (Ср) 14:54

ага.
теперь вроде понятнее стало)
Спасибо!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 66

    TopList