Подтвердить что ты не робот

В чем разница между = Empty и IsEmpty() в VBA (Excel)?

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

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

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

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

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

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

4b9b3361

Ответ 1

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

IsEmpty означает, что никакое значение не инициализируется.

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

Ответ 2

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

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

Ответ 3

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

return .Cell(i,1) <> Empty