› Sviluppare funzionalita su Microsoft Office con VBA › Stringhe nulle rimpiazzate con 0 con .Value
-
AutoreArticoli
-
Buongiorno, eseguo il seguente codice VBA:
CC.Range("BA11:BA500") = CD.Range("BA11:BA500").Valuein una qualsiasi cella nel Range indicato è presente il comando:
=CERCA.VERT($A11;[LOGISTA_ARTICOLI.xls]ARTICOLI!$B$11:$Z$600;10;FALSO)In alcune celle il risultato è una stringa nulla ("").
il problema è che le stringhe nulle ("") vengono rimpiazzate con 0 (zero).
Come si può fare perché le stringhe nulle rimangano stringhe nulle e non vengano sostituite col valore 0 (zero)?
Grazie!
Invece di un assegnamento diretto, scorri le celle BA11:BA500 e condiziona il risultato a un test if.
Oppure lascia l'assegnamento (visto che è velocissimo) e alla fine fai una sostituzione degli zeri con un Replace sul Range interessato.
Un'altra soluzione:
[CC!BA11:BA500] = [IF(INDEX(CD!BA11:BA500,0)=0,"",INDEX(CD!BA11:BA500,0))]Questo lascia intatti i valori non-zero, mette stringa nulla se trova zero (anche se zero è il risultato della formula!), lascia i valori di errore se li trova.
I maghi delle formule possono essere fieri di me 🙂Mi risulta questo:
Le cose stanno così, se una cella diciamo A1 è vuota, allora, se in B1 mettiamo la formula =A1 il risultato in B1 è 0 (zero).
Salvo sostituire =A1 con =SE(A1="";"";A1).
Lo stesso vale per =CERCA.VERT, se la cella trovata è vuota il risultato, come sopra è 0 (zero), salvo testare, come sopra, =SE(CERCA.VERT( ...) ="";"";CERCA.VERT(...).
Poi, giustamente, se in B1 c'è 0 (zero) allora l'istruzione VBA Range("B1") = Range("B1").value sostituisce la formula con 0 (zero).
Ovvio che se la cella A1 (o la cella che cerca il CERCA.VERT) non fosse vuota ma ci fosse ="" allora non c'è bisogno di nessun test, il risultato in B1 sarebbe "" (salvo che ci sia un valore, ovviamente).
Vi risulta? (spero di essermi spiegato bene ...)
-
AutoreArticoli
