В чем разница между = 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?
Ответы
Ответ 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