В чем разница между = пустым и IsEmpty () в VBA (Excel)? - PullRequest
27 голосов
/ 15 декабря 2011

Я использовал следующий код VBA:

Do While .Cell(i,1) <> Empty
  ' doing things
  i = i+1
Loop

для перебора столбцов (со значениями Double / Integer) в Excel.Затем я обнаружил случай, когда тест оценивается как Ложь, когда значение ячейки равно 0. Я понятия не имею, в чем разница между этим случаем и рабочим.

Если я изменю тест на:

Do While Not IsEmpty(.Cell(i,1))
  ..
Loop

работает нормально.Итак, мой вопрос: в чем разница между оценкой IsEmpty () и = Empty?В каких случаях = Пустое значение оценивается как Истина для ячеек со значением 0?

Ответы [ 3 ]

29 голосов
/ 15 декабря 2011

Empty относится к переменной со значением по умолчанию. Поэтому, если вы проверите, если ячейка со значением 0 = Empty, она вернет true.

IsEmpty означает отсутствие инициализируемого значения.

В двух словах: если вы хотите увидеть, пуста ли ячейка (поскольку в ее значении ничего нет), используйте IsEmpty. Если вы хотите узнать, соответствует ли что-то текущему значению по умолчанию, используйте Empty.

4 голосов
/ 15 декабря 2011

Из справки:
IsEmpty возвращает True, если переменная неинициализирована или явно установлена ​​на Пустой ; в противном случае возвращается False. False всегда возвращается, если выражение содержит более одной переменной.
IsEmpty возвращает только значимую информацию для вариантов .

Чтобы проверить, пуста ли ячейка, вы можете использовать cell(x,y) = "".
В конечном итоге вы можете сэкономить время, используя Range("X:Y").SpecialCells(xlCellTypeBlanks) или xlCellTypeConstants или xlCellTypeFormulas

0 голосов
/ 15 декабря 2011

Я полагаю, что IsEmpty - это просто метод, который принимает возвращаемое значение Cell и проверяет, является ли значение Empty пустым: IsEmpty (.Cell (i, 1)) делает ->

return .Cell(i,1) <> Empty
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...