[Excel 2007 - VBA - Concatena] dove sbaglio?

di il
7 risposte

[Excel 2007 - VBA - Concatena] dove sbaglio?

Salve, sono nuovo di questo forum, e sono nuovo anche di VBA.

Da autodidatta sto cercando di creare delle macro in excel


Dichiarazione variabili:
Dim IncrementoRiga As Integer
Dim SlittamentoLista As Integer
Dim SlittamentoImporta As Integer

Posto la parte di macro che fa parte di un ciclo For..Next che funziona perfettamente (non sto a commentare perchè dovrebbe capirsi bene il funzionamento) e mi restituisce nella cella appropriata il valore corretto:

Range("C" & SlittamentoLista + IncrementoRiga * 2).Select
ActiveCell.Formula = "=CONCATENATE(Importazione!B4,"" "",Importazione!C4)"


La parte di VBA sopra va modificata in modo che la "Formula" anche lei sia influenzata dal For..Next e io l'ho scritta nel modo seguente... ma come risultato dentro la cella interessata di destinazione mi risulta #NOME? che dovrebbe significare "nome formula sbagliato":

Range("C" & SlitamentoLista + IncrementoRiga * 2).Select
ActiveCell.Formula = "=CONCATENATE(Importazione!B & SlittamentoImporta + IncrementoRiga, "" "", Importazione!C & SlittamentoImporta + IncrementoRiga)"

DOVE STO SBAGLIANDO ???

Ringrazio anticipatamente
Mirko

7 Risposte

  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Sbagli la costruzione della Formula...

    Prova a fare un DEBUG.PRINT della stringa che cerchi di assegnare alla proprietà [Formula] della Cella, ti accorgerai che le VARIABILI [SlittamentoImporta + IncrementoRiga] non vengono valorizzate... e questo perchè sono all'interno dei DELIMITATORI ""

    Esempio:
    
    Dim A As Integer
    A=2
    MsgBox "Il Valore di A=" & A
    MsgBox "Il Valore di A=A"
    Se fai attenzione alla differenza tra le 2 sintassi dovrebbe esserti semplice capire l'errore...
  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Grazie @Alex,

    infati il problema sta proprio li...

    Nella versione:
    Range("C" & SlittamentoLista + IncrementoRiga * 2).Select
    ActiveCell.Formula = "=CONCATENATE(Importazione!B4,"" "",Importazione!C4)"

    La sintassi è ben chiara e delimitata correttamente da " ed infatti funziona corretamente ma non rientra in un ciclo For...Next


    mentre nell'altra versione ho cercato di variare B4 e C4 dando il valore della 4° riga tramite routin For...Next e nello specifico il valore della riga deve avvenire tramite la somma di SlittamentoImporta + IncrementoRiga ma data la mia ignoranza in materia non so come scrivere il codice e mi è venuto fuori il codice indicato che riporto per comodità nuovamente quà:
    Range("C" & SlitamentoLista + IncrementoRiga * 2).Select
    ActiveCell.Formula = "=CONCATENATE(Importazione!B & SlittamentoImporta + IncrementoRiga, "" "", Importazione!C & SlittamentoImporta + IncrementoRiga)"

    Gentilemnte, mi sai aiutare a tradurre il codice della prima versione
    da Foglio!B4
    a Foglio!B e il numero riga che deve essere composto da SlittamentoImporta + IncrementoRiga

    Ho letto anche che al posto del comando CONCATENATE è già di base utilizzabile al suo posto, essendo VBA, il comando & ,ma creando la formula come di seguito non cambia e mi da sempre come risultato #NOME?
    Range("C" & SlitamentoLista + IncrementoRiga * 2).Select
    ActiveCell.Formula = "=Importazione!B & SlittamentoImporta + IncrementoRiga & "" "" & Importazione!C & SlittamentoImporta + IncrementoRiga"

    Intanto provo a capire cosa intendi con DEBUG.PRINT . Sono veramente alle prime armi e non so cosa sia e non so come si applica... da autodidatta sperimentatore provo a fare qualche paciugo per capire cosa fa questo comando

    Per ora grazie, e aspetto gentilmente tue notizie sulla trduzione del mio codice

    Mirko
  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Leggi il mio TUTORIAL su come si fa DEBUG:
    http://forum.masterdrive.it/access-79/access-debug-44533/
    è stato scritto per Access, ma la maggior parte delle cose è applicabile anche ad Excel in quanto il VBEditor è il medesimo...

    Imparare a fare DEBUG è il 99% di quello che serve a chi scrive codice...!

    Vedrai che poi scrivi giusto anche la stringa...
  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Grazie... provvedo ad istruirmi
  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Grazie @Alex... molto interessante il comando Debug.Print...

    come ho detto io non ne so niente di VBA e da autodidata sto sperimentando...

    Al posto di Debug.Print... usavo MsgBox e visualizzavo le variabili, al posto di interrompere le istruzioni... mettevo un altro MsgBox così mi imponeva di premere ok per cotinuare, e nel caso premevo ripetutamente esc per troncare l'esecuzione...

    Molto alternativo ma riuscivo a leggere punto per punto le variabili


    Onestamente mi sono un po perso leggendo il tuo tutorial perchè comunque usa termini che al momento mi sono ancora oscuri (parlo di termini molto base che comunque un po alla volta dovrò studiarmi partendo da zero).

    Comunque da profano direi che tutto il problema sta nello scrivere correttamente la sintassi del comando CONCATENATE usando VARIABILI al posto del numero di riga

    nel frattempo ti chiederei una cortesia che magari per te è super banale, ma che per me non ho ancora sperimentato e non so come si scrive una semplice variabile dentro una formula CONCATENATE.

    Mi sai gentilemnte convertire la sintasi ActiveCell.Formula = "=CONCATENATE(Importazione!B4,"" "",Importazione!C4)", mettendo al posto della riga 4 la variabile SlittamentoImporta o meglio ancora al posto della riga 4 la somma dei valori delle variabili SlittamentoImporta + IncrementoRiga.

    Alla fine per il momento il mio problema è solamente quello...
    Ho già testato alla mia maniera (MsgBox) il valore dele due variabili ed è corretto.
    Se mi puoi tradurre la sintassi come da mia indicazione te ne sarei molto grato

    Grazie anticipatamente
    Mirko
  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Cavolo... mi accorgo solo ora di quanto tempo è passato dall'ultima volta....

    Ho ripreso in mano la mia macro... e SONO ANCORA BLOCCATO nello stesso punto...

    Qualcuno può gentilemtne aiutarmi?

    Grazie
    Mirko
  • Re: [Excel 2007 - VBA - Concatena] dove sbaglio?

    Finalmente sono riuscito in questo modo:

    Anziche il seguente che restiruisce ERRORE
    Range("C" & SlitamentoLista + IncrementoRiga * 2).Select
    ActiveCell.Formula = "=CONCATENATE(Importazione!B & SlittamentoImporta + IncrementoRiga, "" "", Importazione!C & SlittamentoImporta + IncrementoRiga)"

    Ho usato questo che FUNZIONA
    Cells(SlitLista + IncrementoRiga * 2, "C").Value = Worksheets("Importazione").Cells(SlitImporta + IncrementoRiga, "B") & " " & Worksheets("Importazione").Cells(SlitImporta + IncrementoRiga, "C")
Devi accedere o registrarti per scrivere nel forum
7 risposte