funzione cells



  • funzione cells
    di people (utente non iscritto) data: 07/08/2013 11:50:56

    salve!perchè ricevo un errore per questo codice?

    sia per cells(x,y).value, che per cells(x,y).formula


     
    NON FUNZIONA RESTITUISCE : run-time 1004, errore definito dall'applicazione o dall'oggetto
    
    Sub Crea()
    
        Cells(2, 1).formula = "=se(A1=1;1;0)"
        
    End Sub
    
    FUNZIONA
    
    Sub Crea()
    
        Cells(2, 1).formula = "=somma(b1:b10)"
        
    End Sub


  • Cancella data 00/01/1900
    di Maurizio (utente non iscritto) data: 07/08/2013 11:56:09

    Buongiorno, ho copiato attraverso una macro i valori da un foglio A ad un foglio B. le celle di A in cui c'è valore nullo, vengono copiate in B con il valore 0 (zero). Le celle di A con valore nullo e formato "data" vengono copiate in B con valore 00/01/1900. Ho la necessità di far tornare le celle suddette in B con valore nullo.
    Ho attivato il registratore (utilizzando il pulsante cerca e sostituisci, ed inserendo in cerca il valore 00/01/1900), che per quanto riguarda le celle con valore 0 (cioè 00/gen/1900) formattate come "data" mi ha suggerito il seguente codice:

    Cells.Replace What:="00/01/1900", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    nello svolgere la macro con il registratore tutto funziona ma una volta copiata la macro su un modulo, la macro non funziona,
    viceversa il codice per le celle con valore 0 ma formattate come "Generale" funziona sia la prima volta con il registratore che successivamente inserito in una macro, tale codice è il seguente:

    Cells.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    grazie per il vostro aiuto
    Maurizio
     
            Cells.Replace What:="00/01/1900", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    



  • di people (utente non iscritto) data: 07/08/2013 11:57:54

    risolto con FormulaLocal ;)



  • di HarryBosch data: 07/08/2013 23:28:11

    @People
    la funzione
    Cells(2, 1).formula = "=se(A1=1;1;0)"
    ti restituiva un errore dovuto alla gestione delle librerie che in questo caso sono in Inglese; pertanto l'istruzione corretta sarebbe stata:
    Cells(2, 1).Formula = "=IF(A1=1,1,0)"
    con il linguaggio inglese e le "," al posto del ";"

    La seconda formula in realtà viene scritta
    Cells(2, 1).formula = "=somma(b1:b10)"
    semplicemente perché non ci sono i punti e virgola, ma finché non entri nella cella e confermi visualizzi un errore; anche in questo caso sarebbe stato:
    Cells(2, 1).Formula = "=SUM(b1:b10)"

    Utilizzando .FormulaLocal riporti tutto quello tra virgolette come se fosse una stringa, come se scrivessi direttamente nella barra della formula, e pertanto il risultato è corretto scrivendo nella lingua dell'utente, in questo caso in Italiano



  • di HarryBosch data: 07/08/2013 23:28:56

    @Maurizio
    ti chiedo gentilmente di aprire una nuova discussione visto che sei intervenuto in quella di altro utente , grazie :)