di Anthony47 » 05/09/07 22:29
Il miglior sistema per imparare e’ “debuggare”:
-scrivi la tua macro
-setta il cursore all’ interno del codice della macro
-premi F8; ogni F8 esegue uno step (modalita' passo-passo), e la prossima istruzione viene evidenziata
-se col cursore vai sopra i nomi delle variabili o sui nomi funzione (senza cliccare), dopo qualche secondo ti compare il valore della variabile o il risultato delle funzioni (ma non di tutte).
-se tieni la finestra del vba non al max, puoi vedere sullo sfondo il comportamento sul foglio excel; puoi anche commutare tra vba ed excel, e anche interagire ma in modo appropriato (es. cambiare valori di celle, cambiare selezione, navigare sui fogli, e quanto altro compatibile col contesto)
-da passo passo (F8) puoi passare a Esegui con F5.
-volendo pui mettere dei break (punti di stop del codice): vai sul bordo alla sx di una istruzione, premi F9; in questo modo se lanci la macro, essa si fermera’ quando arrivi sul break; cosi’ puoi esaminare la situazione, ed eventualmente continuare in passo-passo. Per togliere un break si usa ancora F9.
-mentre sei in passo-passo su una istruzione, puoi spostare l’ istruzione da eseguire (quella evidenziata) trascinando la freccia che compare sulla cornice di sx su un’ altra istruzione
-puoi anche modificare al volo le istruzioni, anche quella corrente
-in ogni momento (o quasi), se setti il cursore all’ interno di una funzione e premi F1 ti compare l’ help on-line di quella voce. Molto utile quando va in errore: selezioni i pezzi del codice in errore e guardi come avrebbero dovuto essere usati.
Per quanto riguarda la tua macro, l’ idea e’ buona; debuggando scoprirai molte cose “utili”, ma sono convinto che risolverai.
Riposta il codice finale, cosi’ altri apprendisti (anche io mi metto tra quelli che devono ancora apprendere molto) possono vedere il prima (ora) e il dopo.
Attenzione, le macro su evento (es. Worksheet_Change, Worksheet_Activate, Worksheet_SelectionChange, Workbook_Open e simili) non possono essere lanciate “a comando” con F8; per debuggare quindi metterai un break sulla prima istruzione e poi puoi procedere in passo-passo; idem per il codice delle User defined functions.
Tutto questo lo scrivo e lo sostengo non per sadismo (sarebbe stato molto piu’ semplice scriverti 4-5 righe di codice…) ma perche’ sono convinto che sia utilissimo a chi gia’ scrive qualcosa o a chi vorrebbe ma non osa modificare il codice di una macro registrata; perche’ la migliore macro e’ quella che uno ha fatto funzionare col proprio sudore.
Se hai dubbi, posta ancora; e mi raccomando ancora di postare il risultato.
Ciao.