Tutorial Advanced Excel VBA

Tutorial Advanced Excel VBA


Linguaggio di scripting di Microsoft Excel, Visual Basic, Applications Edition, ha molti strumenti per estendere le funzionalità di default di Excel. Uno di questi strumenti è la possibilità di aggiungere controlli (come caselle di controllo e pulsanti) direttamente su fogli di calcolo. Utilizzando i controlli di Visual Basic e la sua capacità di attingere a funzioni fondamentali di Excel fa per un tutorial efficace nel migliorare Excel tramite Visual Basic for Applications.

Progetto: Utilizzare Visual Basic per calcolare subtotali

Tutorial Advanced Excel VBA


Intraprendere un progetto di subtotali per le colonne di calcolo in una tabella del foglio di lavoro. Iniziare con l'apertura di Excel e la creazione di un tavolo in qualsiasi parte del foglio di lavoro. La tabella è inizialmente come il tavolo in Illustrazione 1. Selezionare la tabella, comprese le intestazioni delle colonne, e creare il nome di "mytab" per questa tabella. Creare il nome immettendo in di Excel Nome di sicurezza, che è verso l'angolo in alto a sinistra dell'area di lavoro di Excel.

Aggiungere controlli di Visual Basic



Aggiungere caselle di controllo per la tavola, con ogni casella di controllo seduto sopra una colonna della tabella. È possibile trovare le caselle sotto sviluppatori> Inserisci> Controlli modulo. Inoltre, aggiungere due pulsanti al foglio di lavoro. Trascinarle dalla stessa zona, come le caselle di controllo, a sinistra ea destra del mio tavolo Tab. Fare clic destro il tasto sinistro e cambiare il suo testo da leggere "Do subtotali." Modificare il testo del tasto destro per "Rimuovi subtotali." Posizionare i pulsanti e caselle di controllo in modo che il tavolo si presenta come la tabella nella Figura 2.

Scrivere il codice

Ora che avete progettato il tavolo e dei suoi comandi, si scriverà il codice che fa i subtotali sul tavolo. Inserire l'IDE di Visual Basic (ambiente di sviluppo integrato) e aggiungere un modulo. Fare clic su Inserisci> Modulo. Nella finestra del codice del nuovo modulo, inserire il codice di programma: Option Explicit Public Sub fare subtotale () s fiochi come String Dim r come gamma Dim c come oggetto ar Dim () As Integer Dim Ifield As Integer Dim varItems Dim nChkd As Integer ReDim ar (0 a 0) 'rimuovere precedenti subtotali RemoveSubtotals' creare l'array di indici campi (a partire da 1) a totale parziale Ifield = 1 nChkd = 0 'loop attraverso caselle di controllo. Se uno è selezionata, aggiungere il suo campo di gamma per ogni c In ActiveSheet.CheckBoxes Se (c.Value = 1) Allora nChkd = nChkd + 1 'aggiungere questo campo per serie ar (UBound (ar)) = Ifield ReDim Preserve ar ( 0 per UBound (ar) + 1) 'aggiungere elemento per il prossimo campo selezionato End If Ifield = Ifield + 1 Avanti Se (nChkd = 0) Then MsgBox ( "check si prega di almeno una casella.") Exit Sub End Se ReDim Preserve ar (da 0 a UBound (AR) - 1) 'Rimuovere ultimo elemento vuoto varItems = ar' Do subtotale reale. . In primo luogo, trovare la gamma di fare subtotale su Set r = Application.Names ( "mytab") RefersToRange 'recuperare l'intervallo denominato di totale parziale r.Subtotal GroupBy: = 1, funzione: = xlSum, TotalList: = varItems, SummaryBelowData: = xlSummaryBelow End Sub RemoveSubtotals Public Sub () 'Controllare prima subtotale, utilizzando lo storage fornito dal campo commentare nel Namespace per la mia scheda (vedi formule> Nome Manager)' Noi negozio originale, prima colonna della tabella. Se la colonna di partenza della tabella corrente è diverso, dobbiamo ripristinare la tabella di posizione originale. r Dim come gamma Dim s As String Dim nOrigCol come numero intero Imposta R = Application.Names ( "mytab"). RefersToRange s = Application.Names ( "mytab"). Commento 'Nessun commento non significa eseguire prima, quindi non la rimozione di prima subtotale, o regolazione della gamma originale, è necessario. 'Ma, salvare colonna di partenza del tavolo per la prossima chiamata a questa funzione. Se (s = "") Allora Application.Names ( "mytab") Commento = r.Column Exit End Sub Se Application.Range. ( "A1: xfd65536"). RemoveSubtotal 'Regolare gamma: rimuovere una colonna se uno è stato aggiunto nOrigCol = CInt (s) Se (nOrigCol <r.Column) Poi r.Previous.EntireColumn.Delete End If End Sub

Eseguire il programma

Tornare al foglio di lavoro Excel che ha il tavolo My Tab. Assegnare i tasti per le macro che avete appena scritto. Tasto destro del mouse sul pulsante "Do subtotali" e selezionare "Assegna macro". Nella finestra di dialogo che appare, selezionare la funzione "doSubtotal", che fa parte del codice appena scritto. Chiudere la finestra di dialogo facendo clic su "OK", e assegnare l'altra funzione macro che hai scritto, RemoveSubtotals, per l'altro pulsante. Eseguire il programma verificando una qualsiasi combinazione delle caselle di controllo e fare clic sul pulsante subtotali. Cancellare i subtotali premendo l'altro pulsante.