Определить пустая или нет Row

Программирование на Visual Basic for Applications
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Определить пустая или нет Row

Сообщение Avtopic » 21.02.2007 (Ср) 16:18

Здравствуйте!
Excel.
Можно или нет без перебора в цикле, узнать что в определенном Row не содержатся данные. Все Cells пустые (Len=0)
Спасибо!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.02.2007 (Ср) 16:52

if application.worksheetfunction.countblank(r)=r.cells.count then ...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 21.02.2007 (Ср) 17:58

Спасибо!

Чудовище под кроватью
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 27.11.2006 (Пн) 14:46
Откуда: А из ника не ясно?

Сообщение Чудовище под кроватью » 22.02.2007 (Чт) 7:03

GSerg писал(а):if application.worksheetfunction.countblank(r)=r.cells.count then ...

Код: Выделить всё
If Not WorksheetFunction.CountA(r) then ...
У-у-у!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.02.2007 (Чт) 11:07

Т.е. если WorksheetFunction.CountA(r) будет равно 1, у тебя возникнет -2, и код спокойно пойдёт выполняться дальше...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Чудовище под кроватью
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 27.11.2006 (Пн) 14:46
Откуда: А из ника не ясно?

Сообщение Чудовище под кроватью » 22.02.2007 (Чт) 12:00

GSerg писал(а):Т.е. если WorksheetFunction.CountA(r) будет равно 1, у тебя возникнет -2, и код спокойно пойдёт выполняться дальше...

Точно! Не подумал. :oops: Он же будет Not от Long брать будет, а не от Boolean. Тогда:
Код: Выделить всё
If WorksheetFunction.CountA(r)=False Then

Или:
Код: Выделить всё
If WorksheetFunction.CountA(r) Then
'...
Else
'и тут уже код
End If

Кстати, а что если сравнить строку с пустой строкой? Тогда можно обойтись без применения метода - только обращением к свойствам. Что быстрее?
У-у-у!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.02.2007 (Чт) 12:12

Да почему boolean всё время? :roll: Ноль надо, вообще-то...

Чудовище под кроватью писал(а):Кстати, а что если сравнить строку с пустой строкой?

Для массива ячеек?
Читай вопрос.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Чудовище под кроватью
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 27.11.2006 (Пн) 14:46
Откуда: А из ника не ясно?

Сообщение Чудовище под кроватью » 22.02.2007 (Чт) 12:20

GSerg писал(а):Да почему boolean всё время? :roll: Ноль надо, вообще-то...

В данном случае Boolean вполне достаточно (ведь всего-то надо проверить ноль/не ноль), поэтому его и использовал. Так просто шустрее получается. Но можно и через сравнение двух Long'ов. Чуть медленнее просто.

Для массива ячеек?
Читай вопрос.

Ну да, для массива. А что, .value и .value нельзя сравнить? :roll: ну и ладно. И через Worksheetfunction достаточно шустро работает.
Последний раз редактировалось Чудовище под кроватью 22.02.2007 (Чт) 12:30, всего редактировалось 1 раз.
У-у-у!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.02.2007 (Чт) 12:28

Чудовище под кроватью писал(а):В данном случае Boolean вполне достаточно (ведь всего-то надо проверить ноль/не ноль), поэтому его и использовал. Так просто шустрее получается. Но можно и через сравнение двух Long'ов. Чуть медленнее просто.

Что за глупость? :roll: Мало того, что возвращаемое функцией значение далеко не boolean, что само по себе указывает на нужный тип сравнения. Так ещё и "шустрее" - с чего? :roll:

Чудовище под кроватью писал(а):Ну да, для массива. А что, .value и .value нельзя сравнить? :roll:

С левой стороны - .value. А с правой что?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Чудовище под кроватью
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 27.11.2006 (Пн) 14:46
Откуда: А из ника не ясно?

Сообщение Чудовище под кроватью » 22.02.2007 (Чт) 12:52

GSerg
Так ещё и "шустрее" - с чего?

Не знаю :D . Пять раз провел тест: ставлю False, потом 0 и сравниваю время работы (в цикле проходил по всем строкам). Только один раз получилось одинаковое время, во всех других случаях False сработал быстрее (правда, не намного).
Но если заполненных строк мало, то работают 0 и False одинаково.

З.Ы.: сам удивился. :D
У-у-у!!


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот и гости: 53

    TopList