Sviluppare funzionalita su Microsoft Office con VBA Stringhe nulle rimpiazzate con 0 con .Value

Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #37072 Score: 0 | Risposta

    ABRAMO48
    Partecipante
      1 pt

      Buongiorno, eseguo il seguente codice VBA:

      CC.Range("BA11:BA500") = CD.Range("BA11:BA500").Value

      in 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!

       

      #37078 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        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.

        #37079 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          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 🙂

          #37103 Score: 0 | Risposta

          ABRAMO48
          Partecipante
            1 pt

            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 ...)

             

             

          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: Stringhe nulle rimpiazzate con 0 con .Value
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: