Apri Excel e VBE (Visual Basic Editor). A meno che non sia stato modificato, la finestra VBE contiene il Esplora progetti finestra e il Proprietà finestra (è possibile accedervi dal Visualizzazione menù).
Esplora progetti: Funziona come un file manager. Ti aiuta a navigare nel codice nella tua cartella di lavoro.
Finestra delle proprietà: Mostra le proprietà dell'oggetto attualmente attivo (es. Foglio1) della cartella di lavoro corrente (ad es.Prenota1).
In questo articolo impareremo quanto sia facile registrare macro in Excel.
Esercizio 1: Registrazione di una macro.
Questo esercizio mostra cosa succede quando viene registrata una macro e dimostra la differenza tra la registrazione di riferimenti assoluti e relativi.
1. In un foglio di lavoro vuoto in una nuova cartella di lavoro, seleziona cella C10
2. Avviare il Registratore di macro con opzione per salvare la macro in Questa cartella di lavoro. A questo punto il VBE crea un nuovo Moduli cartella. È abbastanza sicuro andare a guardarlo: le tue azioni non verranno registrate. Clicca il [+] accanto alla cartella e vedere che il VBE ha inserito un modulo nella cartella e lo ha chiamato Modulo 1. Fare doppio clic sull'icona del modulo per aprire la finestra del codice. Torna a Excel.
3. Assicurarsi che il Riferimento relativo pulsante sul Interrompi registrazione la barra degli strumenti NON è premuta.
4. Seleziona cella B5 e arrestare il registratore.
5. Passa al VBE e guarda il codice:
Intervallo ("B5"). Seleziona
6. Ora registra un'altra macro, esattamente allo stesso modo, ma questa volta con Riferimento relativo pulsante premuto.
7. Passa al VBE e guarda il codice:
ActiveCell.Offset(-5, -1).Intervallo("A1").Seleziona
8. Ora registra un'altra macro, ma invece di selezionare la cella B5, seleziona un blocco di celle 3x3 a partire da B5 (seleziona le celle B5: F7)
9. Passa al VBE e guarda il codice:
ActiveCell.Offset(-5, -1).Intervallo("A1:B3").Seleziona
10. Riprodurre le macro, dopo aver selezionato una cella diversa da C10 (per Macro2 e Macro3 la cella iniziale deve essere nella riga 6 o inferiore - vedere il passaggio 11 di seguito)
Macro1 - sposta sempre la selezione su B5
Macro2 - sposta la selezione in una cella 5 righe in alto e 1 colonna a sinistra della cella selezionata.
Macro3 - seleziona sempre un blocco di sei celle a partire da 5 righe in alto e 1 colonna a sinistra della cella selezionata.
11. Eseguire Macro2 ma forzare un errore selezionando una cella nella riga 5 o successiva. La macro tenta di selezionare una cella inesistente perché il suo codice le dice di selezionare una cella 5 righe sopra il punto di partenza, e questo è fuori dalla parte superiore del foglio. premere Debug da portare alla parte della macro che ha causato il problema.
NOTA: Quando il VBE è in modalità Debug, la riga di codice che ha causato il problema è evidenziata in giallo. È necessario "reimpostare" la macro prima di poter procedere. Clicca il Ripristina pulsante sulla barra degli strumenti VBE o vai a Esegui > Ripristina. L'evidenziazione gialla scompare e il VBE esce dalla modalità Debug.
12. È importante cercare di anticipare errori dell'utente come questo. Il modo più semplice è modificare il codice per ignorare semplicemente gli errori e passare all'attività successiva. Fallo aggiungendo la riga…
In caso di errore Riprendi Avanti
… immediatamente sopra la prima riga della macro (sotto la riga Sub Macro1()
13. Corri Macro2 come prima, iniziando troppo in alto sul foglio. Questa volta la riga che hai digitato dice a Excel di ignorare la riga di codice che non può eseguire. Non c'è alcun messaggio di errore e la macro esce dopo aver fatto tutto il possibile. Utilizzare questo metodo di gestione degli errori con cautela. Questa è una macro molto semplice. Una macro più complessa probabilmente non funzionerebbe come previsto se gli errori fossero semplicemente ignorati. Inoltre, l'utente non ha idea che qualcosa sia andato storto.
14. Modifica il codice di Macro2 per includere un gestore di errori più sofisticato in questo modo:
Sottomacro2()
In caso di errore Vai a ErrorHandler
ActiveCell.Offset(-5, -1).Intervallo("A1").Seleziona
Esci Sotto
ErrorHandler:
MsgBox "Devi iniziare sotto la riga 5"
Fine sottotitolo
15. Questa volta all'utente viene presentata una finestra di dialogo quando qualcosa va storto. Se non ci sono errori, la riga Exit Sub fa sì che la macro finisca dopo che ha svolto il suo lavoro, altrimenti l'utente vedrebbe il messaggio anche se non ci fossero errori.
Miglioramento delle macro registrate
Il modo migliore per apprendere le basi di VBA è registrare una macro e vedere come Excel scrive il proprio codice. Spesso, però, le macro registrate contengono molto più codice del necessario. I seguenti esercizi dimostrano come è possibile migliorare e semplificare il codice prodotto da una macro registrata.
Esercizio 2: Migliorare le macro registrate
Questo esercizio mostra che quando vengono registrate le macro, spesso viene generato più codice del necessario. Dimostra l'uso dell'istruzione With per precisare il codice.
1. Seleziona qualsiasi cella o blocco di celle.
2. Avviare il registratore di macro e chiamare la macro FormatCells. L'impostazione Riferimenti relativi non sarà rilevante.
3. Vai a Formato > Celle > Carattere e scegli Times New Roman e rosso.
Vai a Modelli e scegli Giallo.
Vai a Allineamento e scegli Orizzontale, al centro
Vai a Numero e scegli Valuta.
4. Fare clic su ok e arrestare il registratore.
5. Fare clic su Disfare pulsante (o Ctrl+Z) per annullare le modifiche al foglio di lavoro.
6. Seleziona un blocco di celle ed esegui il comando FormatoCelle macro. Nota che non può essere annullato! Digita le celle per controllare il risultato della formattazione.
7. Guarda il codice:
Sub FormatSelection()
Selection.NumberFormat = "$#,##0.00"
Con selezione
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientamento = 0
.ShrinkToFit = False
.MergeCells = False
Termina con
Con Selezione.Font
.Name = "Times New Roman"
.FontStyle = "Normale"
.Dimensione = 10
.Barrato = Falso
.Apice = Falso
.Pedice = Falso
.OutlineFont = False
.Ombra = Falso
.Sottolineato = xlUnderlineStyleNone
.Indice Colore = 3
Termina con
Con Selezione.Interno
.Indice Colore = 6
.Modello = xlSolido
.PatternColorIndex = xlAutomatico
Termina con
Fine sottotitolo
Cambia il carattere in Times New Roman
Cambia il colore del carattere in rosso
Cambia il colore di riempimento in Giallo
Clicca il Centro pulsante
Clicca il Valuta pulsante
13. Guarda il codice. Ottieni ancora molte cose che non necessariamente vuoi. Excel sta registrando tutti i predefinito impostazioni. La maggior parte di questi è sicura da eliminare.
14. Sperimenta la modifica direttamente nel codice per cambiare i colori, il carattere, il formato dei numeri, ecc.
Esercizio 3: guarda una macro in fase di registrazione
Questo esercizio mostra che puoi imparare osservando la creazione della macro mentre viene registrata. È anche un esempio di quando a volte l'istruzione With non è appropriata.
1. Apri il file VBA01.xls.
Sebbene questo foglio di lavoro sia visivamente OK e possa essere compreso dall'utente, la presenza di celle vuote può causare problemi. Prova a filtrare i dati e guarda cosa succede. Vai a Dati > Filtro > Filtro automatico e filtra per Regione o Mese. È chiaro che Excel non fa le stesse ipotesi che fa l'utente. Le celle vuote devono essere riempite.
2. Affianca le finestre Excel e VBE (verticalmente) in modo che siano affiancate.
3. Seleziona qualsiasi cella all'interno dei dati. Se è una cella vuota, deve essere adiacente a una cella contenente dati.
4. Avvia il registratore di macro e chiama la macro RiempiCelle Vuote. Imposta per registrare Riferimenti relativi.
5. Nella finestra VBE trovare e fare doppio clic sul modulo (Module1) per la cartella di lavoro corrente per aprire il riquadro di modifica, quindi disattivare la finestra Esplora progetti e la finestra Proprietà (solo per fare spazio).
6. Registrare la nuova macro come segue:
Passo 1. Ctrl+* (per selezionare la regione corrente)
Passo 2. Modifica > Vai a > Speciale > Spazi vuoti > OK (per selezionare tutte le celle vuote nella regione corrente)
Passaggio 3. Digita =[Freccia Su] quindi premere Ctrl+Invio (per inserire la digitazione in tutte le celle selezionate)
Passaggio 4. Ctrl+* (per selezionare nuovamente la regione corrente)
Passaggio 5. Ctrl+C (per copiare la selezione - qualsiasi metodo andrà bene)
Passaggio 6. Modifica > Incolla speciale > Valori > OK (per incollare nuovamente i dati nello stesso posto ma scartando le formule)
Passaggio 7. Esc (per uscire dalla modalità di copia)
Passaggio 8. Interrompi la registrazione.
7. Guarda il codice:
Sub FillEmptyCells()
Selection.CurrentRegion.Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selezione.FormulaR1C1 = "=R[-1]C"
Selection.CurrentRegion.Select
Selezione.Copia
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
Falso, Trasponi:= Falso
Application.CutCopyMode = False
Fine sottotitolo
8. Notare l'uso dello spazio e del trattino basso “ _” per indicare la suddivisione di una singola riga di codice su una nuova riga. Senza questo Excel tratterebbe il codice come due istruzioni separate.
9. Poiché questa macro è stata registrata con comandi ben congegnati, c'è poco codice non necessario. Nel Incolla speciale tutto ciò che segue la parola “xlValues” può essere cancellato.
10. Prova la macro. Quindi usa lo strumento Filtro automatico e nota la differenza.