it-swarm-pt.tech

Qual é a diferença entre = Empty e IsEmpty () no VBA (Excel)?

Eu usei o seguinte código VBA:

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

para percorrer colunas (com valores Duplo/Inteiro) no Excel. Então eu encontrei um caso em que o teste é avaliado como False sempre que o valor da célula é 0. Não tenho idéia de qual é a diferença entre este caso e os que estão em funcionamento.

Se eu mudar o teste para:

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

funciona bem. Portanto, minha pergunta é: Qual é a diferença entre como IsEmpty () e = Empty é avaliado? Em que casos = Vazio será avaliado como True para células com valor 0?

27
Christian

Empty refere-se a uma variável com seu valor padrão. Portanto, se você verificar se uma célula com o valor 0 = Empty, ela retornará true.

IsEmpty refere-se a nenhum valor sendo inicializado.

Em poucas palavras, se você quiser ver se uma célula está vazia (como não existe nada em seu valor), use IsEmpty. Se você quiser ver se algo está atualmente em seu valor padrão, use Empty.

29
Justin Self

Na Ajuda:
IsEmpty retorna True se a variável não for inicializada ou estiver explicitamente definida como Vazia; caso contrário, ele retornará False. False sempre será retornado se a expressão contiver mais de uma variável.
IsEmpty retorna apenas informações significativas para as variantes .

Para verificar se uma célula está vazia, você pode usar cell(x,y) = "".
Você pode economizar tempo usando Range("X:Y").SpecialCells(xlCellTypeBlanks) ou xlCellTypeConstants ou xlCellTypeFormulas

4
Patrick Honorez