Controllare con VBA se una cella Excel è vuota

Anonimo
2011-06-15T09:55:04+00:00

Ciao. Per effettuare il controllo in oggetto, ho trovato suggerimenti diversi, del genere:

If .Range("A1") = "" Then

oppure

If .Range("A1") = 0 Then

oppure

If Evaluate("=COUNTBLANK(" & .Range("A1").Address & ")") = 1 Then

Potrei avere chiarimenti sulla differenza tra un codice e l'altro?

e/o sul migliore da utilizzare e/o eventualmente altre soluzioni ? ho provato con il comando Empty, ma non son riuscito a farlo funzionare.

Grazie in anticipo per il riscontro, ciao.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-06-15T20:42:59+00:00

Ciao. Per effettuare il controllo in oggetto, ho trovato suggerimenti diversi, del genere:

 

If .Range("A1") = "" Then

 

oppure

 

If .Range("A1") = 0 Then

 

oppure

 

If Evaluate("=COUNTBLANK(" & .Range("A1").Address & ")") = 1 Then

 

Potrei avere chiarimenti sulla differenza tra un codice e l'altro?

e/o sul migliore da utilizzare e/o eventualmente altre soluzioni ? ho provato con il comando Empty, ma non son riuscito a farlo funzionare.

 

Grazie in anticipo per il riscontro, ciao.

Io utilizzerei questa per valutare il contenuto di una singola cella:

If Len(.Range("A1").Value) = 0 Then

oppure, in seconda battuta:

If .Range("A1").Value = "" Then

Questa qui la utilizzerei solo se dovessi controllare tot celle di un Range:

Public Sub m()

    Dim lng As Long

    Dim sh As Worksheet

    Dim rng As Range

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Set rng = .Range("A1:A10")

        lng = Evaluate("=COUNTBLANK(" & rng.Address & ")")

        MsgBox lng

    End With

    Set rng = Nothing

    Set sh = Nothing

End Sub

Per una singola cella, richiamare il metodo Evaluate costa solo tempo macchina. Per più celle, evita invece il tempo macchiana richiesto dal cicli for. Attento che 0(zero) e "" sono cose molto, molto diverse.

La risposta è stata utile?

6 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2011-06-17T09:33:14+00:00

    Ciao, grazie per l'attenzione.

    Perfetto come sempre, utilizzerò i 2 metodi che mi hai suggerito a seconda che si tratti di singola cella o di range di più celle.

    Grazie ancora, ciao.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento