codici VBA non si aggiornano dopo modifica



  • codici VBA non si aggiornano dopo modifica di marco_budin data: 05/01/2017 07:31:38

    ciao a tutti,
    ho creato un foglio Excel con centinaia di codici VBA e macro. Questi codici contengono dei riferimenti a celle Excel ben precise.
    Adesso ho la necessità di aggiungere delle righe nel foglio Excel che ho creato e quando l'ho fatto ho notato che i codici VBA non si adeguano/aggiornano alla modifica eseguita.

    ES: se nel codice c'è la cella A2 come riferimento, se aggiungo una riga nel foglio excel, il codice dovrebbe adeguarsi e scrivere A3. Ma questo non avviene. devo modificare manualmente tutti i codici.

    volevo domandare se esiste una impostazione o una funzione di Excel che quando aggiungo righe, automaticamente i codici si adeguano. Altrimenti devo correggere tutto a mano.

    vi ringrazio anticipatamente della risposta.
    saluti
    Marco


  • di patel data: 05/01/2017 08:25:05

    non è chiaro cosa intendi per codici vba e macro, allega un file di esempio e spiega nel dettaglio


  • di scossa data: 06/01/2017 10:57:03

    cit.: "ES: se nel codice c'è la cella A2 come riferimento, se aggiungo una riga nel foglio excel, il codice dovrebbe adeguarsi e scrivere A3. Ma questo non avviene. devo modificare manualmente tutti i codici."

    E per fortuna non avviene ... sta a chi scrive il codice valutare la possibilità che vengano aggiunte righe/colonne e come, di conseguenza deve comportarsi il codice.

    Se prevedi che, in fase di sviluppo da parte tua od a run-time da parte dell'utente, possano venire aggiunte righe che potrebbero causare malfunzionamenti nell'esecuzione del codice è necessario identificare i range "critici" e per ognuno di essi creare un "nome"; dopodiché nel codice si useranno i relativi nomi anziché i range "fisici".

    Es.: se nel tuo codice fai riferimento alla cella A2, che contiene ad esempio il prezzoA, con Range("A2").value, dovrai creare il nome prezzoA (selezioni la cella A2 e nella finestrella in alto a sx dove appare A2 scrivi prezzoA); poi nel codice sostituirai Range("A2") con prezzoA, vedi esempio.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

     
    Sub prova()
      Dim miaVariabile As Double
      
      MsgBox [prezzoA].Address
      miaVariabile = [prezzoA]
      [prezzoA] = [prezzoA] + 1
      MsgBox [prezzoA]  
    
    End Sub
    


  • di scossa data: 06/01/2017 10:58:33

    Ops, dimenticavo: ciao Patel!


  • di patel data: 06/01/2017 11:04:11

    Ciao e buon anno scossa
    non sarebbe male un ripassino sulle definizioni di macro e codice

    @marco_budin
    il codice vba non è assolutamente legato al foglio come lo sono le formule, interagisce col foglio solo quando lo esegui


  • di marco_budin data: 06/01/2017 13:04:53

    Ciao Patel e Scossa! Vi ringrazio per le vostre delucidazioni a riguardo. Quello che volevo appunto sapere è che il foglio excel non è legato ai codici vba e di conseguenza non si aggiornano/adegua come le formule che si scrivono nel foglio excel.

    vi ringrazio molto della vostra risposta e della vostra disponibilità
    alla prossima
    Marco


  • di scossa data: 06/01/2017 13:49:16

    cit. patel: "non sarebbe male un ripassino sulle definizioni di macro e codice"

    Diciamo che in un contesto discorsivo possono considerarsi sinonimi. Facendo un paragone automobilistico, nel dire "la mia auto non tiene il minimo" con auto si sottintende "il motore della mia auto non tiene il minimo".
    Quindi dire "la macro va in errore ..." equivale al più corretto "il codice della macro va in errore ...."



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)