Espansione di una selezione VBA



  • Espansione di una selezione VBA
    di Andrea (utente non iscritto) data: 22/04/2013 15:44:18

    Ciao a tutti, avrei la necessità di sapere come espandere una selezione di una formula fino a che ci sono presenti dei dati nelle celle sotto stanti. Mi spiego meglio: ho una tab su cui faccio delle formule e poi le espando fino alla fine della tabella, il tutto è registrato dall'opzione registra macro di Excel. Il problema è che dall'origine dati (sist.informativo) quanto importo una nuova tabella, essa può avere un numero maggiore di record rispetto alla tabella su cui ho fatto la registrazione della macro, per cui, per i record in più la macro non mi espande le varie formule. Quindi se avessi una tab di 10 record su cui registro la macro che mi calcola le varie formule, quando faccio l'importazione di una nuova tab che ha ad esempio 15 record, la macro non funziona bene perché esegue i calcoli solo per i primi 10 record. La mia intenzione sarebbe quella di trovare un comando che permetta di espandere la selezione fino a quando sono presenti dei dati nelle celle sottostanti.

    E' possibile?? grazie! ciao a tutti



  • di totygno71 data: 22/04/2013 22:02:45

    Ciao
    come avviene l'import dei dati?



  • di andrea (utente non iscritto) data: 23/04/2013 08:18:38

    ciao! praticamente vengono importati automaticamente da access e access a sua volta si estrapola i dati direttamente dal sist informativo aziendale.



  • di totygno71 data: 23/04/2013 11:27:59

    Non si può prevedere un ampio numero di record cosi vai sul sicuro?
    Puoi postare il codice giusto per capirci qualcosa?
    Ciao



  • di andrea (utente non iscritto) data: 23/04/2013 11:37:26

    Grazie a tutti ma ho già risolto, sotto ho postato il codice che cercavo!
     
    Dim val As Variant
        val = Range("B1").Value
        i = 1
        
        Do While val <> ""
        
            Range("A" & i).Select
            ActiveCell.FormulaR1C1 = _
            "=CONCATENATE(RC[2],"" "",""0"",RC[3],"" "",""0"",RC[4])"
        
            Range("M" & i).Select
            ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(C[-12],Foglio2!C[-12]:C[1],3,FALSE),"""")"
        
            Range("N" & i).Select
            ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(C[-13],Foglio2!C[-13]:C,5,FALSE),"""")"
            
            Range("O" & i).Select
            ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(C[-14],Foglio2!C[-14]:C[-1],6,FALSE),"""")"
        
            Range("P" & i).Select
            ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(C[-15],Foglio2!C[-15]:C[-2],13,FALSE),"""")"
        
            Range("Q" & i).Select
            ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(C[-16],Foglio2!C[-16]:C[-3],14,FALSE),"""")"
        
        
        i = i + 1
        val = Range("B" & i)
        
        Loop
        



  • di totygno71 data: 23/04/2013 11:48:28

    Ottimo
    ciao