excel-vba Tutorial
Iniziare con excel-vba
Ricerca…
Osservazioni
Microsoft Excel include un linguaggio di programmazione macro completo chiamato VBA. Questo linguaggio di programmazione ti fornisce almeno tre risorse aggiuntive:
- Esegui automaticamente l'estrazione di Excel dal codice utilizzando Macro. Per la maggior parte, tutto ciò che l'utente può fare manipolando Excel dall'interfaccia utente può essere fatto scrivendo il codice in Excel VBA.
- Crea nuove funzioni di foglio di lavoro personalizzate.
- Interagisci Excel con altre applicazioni come Microsoft Word, PowerPoint, Internet Explorer, Blocco note, ecc.
VBA è l'acronimo di Visual Basic, Applications Edition. È una versione personalizzata del venerabile linguaggio di programmazione Visual Basic che ha alimentato i macro di Microsoft Excel dalla metà degli anni '90.
IMPORTANTE
Assicurati che tutti gli esempi o gli argomenti creati all'interno del tag excel-vba siano specifici e pertinenti all'uso di VBA con Microsoft Excel. Qualsiasi argomento o esempio suggerito che sia generico alla lingua VBA dovrebbe essere rifiutato al fine di evitare la duplicazione degli sforzi.
esempi in tema:
✓ Creazione e interazione con oggetti del foglio di lavoro
✓ La classeWorksheetFunction
e i rispettivi metodi
✓ Usare l'enumerazionexlDirection
per navigare in un intervallo
esempi fuori tema:
✗ Come creare un ciclo "per ogni"
✗ ClasseMsgBox
e come visualizzare un messaggio
✗ Utilizzo di WinAPI in VBA
Versioni
VB
Versione | Data di rilascio |
---|---|
VB6 | 1998/10/01 |
VB7 | 2001-06-06 |
WIN32 | 1998/10/01 |
Win64 | 2001-06-06 |
MAC | 1998/10/01 |
Eccellere
Versione | Data di rilascio |
---|---|
16 | 2016/01/01 |
15 | 2013-01-01 |
14 | 2010-01-01 |
12 | 2007-01-01 |
11 | 2003-01-01 |
10 | 2001-01-01 |
9 | 1999-01-01 |
8 | 1997-01-01 |
7 | 1995-01-01 |
5 | 1993/01/01 |
2 | 1987-01-01 |
Dichiarazione delle variabili
Per dichiarare esplicitamente le variabili in VBA, utilizzare l'istruzione Dim
, seguita dal nome e dal tipo della variabile. Se una variabile viene utilizzata senza essere dichiarata, o se non viene specificato alcun tipo, verrà assegnato il tipo Variant
.
Utilizzare l'istruzione Option Explicit
sulla prima riga di un modulo per forzare tutte le variabili da dichiarare prima dell'utilizzo (vedere SEMPRE Utilizzare "Option Explicit" ).
Si consiglia vivamente di utilizzare sempre Option Explicit
poiché aiuta a prevenire errori di battitura / ortografia e garantisce che le variabili / oggetti rimangano il tipo previsto.
Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
'Outputs: 2
Dim b As Long
b = a + 2
Debug.Print b
'Outputs: 4
Dim c As String
c = "Hello, world!"
Debug.Print c
'Outputs: Hello, world!
End Sub
È possibile dichiarare più variabili su una singola riga utilizzando le virgole come delimitatori, ma ogni tipo deve essere dichiarato singolarmente oppure verrà impostato di default sul tipo Variant
.
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str) 'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
Le variabili possono anche essere dichiarate usando i suffissi di tipo di carattere Data ($% &! # @), Tuttavia l'uso di questi è sempre più scoraggiato.
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
Altri modi di dichiarare le variabili sono:
-
Static
come:Static CounterVariable as Integer
Quando si utilizza l'istruzione statica anziché un'istruzione Dim, la variabile dichiarata manterrà il suo valore tra le chiamate.
-
Public
come:Public CounterVariable as Integer
Le variabili pubbliche possono essere utilizzate in qualsiasi procedura del progetto. Se una variabile pubblica viene dichiarata in un modulo standard o in un modulo di classe, può essere utilizzata anche in tutti i progetti che fanno riferimento al progetto in cui viene dichiarata la variabile pubblica.
-
Private
come:Private CounterVariable as Integer
Le variabili private possono essere utilizzate solo dalle procedure nello stesso modulo.
Fonte e maggiori informazioni:
Digitare caratteri (Visual Basic)
Apertura di Visual Basic Editor (VBE)
Passaggio 1: aprire una cartella di lavoro
Passaggio 2 Opzione A: premere Alt + F11
Questa è la scorciatoia standard per aprire VBE.
Passaggio 2 Opzione B: scheda Sviluppatore -> Visualizza codice
Innanzitutto, la scheda Sviluppatore deve essere aggiunta alla barra multifunzione. Vai a File -> Opzioni -> Personalizza barra multifunzione, quindi seleziona la casella per lo sviluppatore.
Quindi, vai alla scheda sviluppatore e fai clic su "Visualizza codice" o "Visual Basic"
Passaggio 2 Opzione C: scheda Visualizza> Macro> Fare clic sul pulsante Modifica per aprire una macro esistente
Tutte e tre queste opzioni apriranno Visual Basic Editor (VBE):
Aggiunta di un nuovo riferimento alla libreria degli oggetti
La procedura descrive come aggiungere un riferimento alla libreria Object e in seguito come dichiarare nuove variabili con riferimento ai nuovi oggetti della classe della libreria.
L'esempio seguente mostra come aggiungere la libreria di PowerPoint al progetto VB esistente. Come si può vedere, attualmente la libreria degli oggetti di PowerPoint non è disponibile.
Passaggio 1 : selezionare Strumenti menu -> Riferimenti ...
Passaggio 2 : selezionare il riferimento che si desidera aggiungere. Questo esempio si scorre verso il basso per trovare " Microsoft PowerPoint 14.0 Object Library ", quindi premere " OK ".
Nota: PowerPoint 14.0 indica che la versione di Office 2010 è installata sul PC.
Passo 3 : nell'Editor VB, una volta premuto Ctrl + Spazio insieme, si ottiene l'opzione di completamento automatico di PowerPoint.
Dopo aver selezionato PowerPoint
e premuto .
, viene visualizzato un altro menu con tutte le opzioni relative agli oggetti nella libreria di oggetti di PowerPoint. Questo esempio mostra come selezionare l' Application
dell'oggetto di PowerPoint.
Passaggio 4 : ora l'utente può dichiarare più variabili utilizzando la libreria di oggetti di PowerPoint.
Dichiarare una variabile che fa riferimento all'oggetto Presentation
della libreria di oggetti di PowerPoint.
Dichiarare un'altra variabile che fa riferimento all'oggetto Slide
della libreria di oggetti di PowerPoint.
Ora la sezione di dichiarazione delle variabili appare come nella schermata qui sotto, e l'utente può iniziare a usare queste variabili nel suo codice.
Versione del codice di questo tutorial:
Option Explicit
Sub Export_toPPT()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
' here write down everything you want to do with the PowerPoint Class and objects
End Sub
Ciao mondo
- Aprire l'editor di Visual Basic (vedere Apertura dell'editor di Visual Basic )
- Fai clic su Inserisci -> Modulo per aggiungere un nuovo modulo:
- Copia e incolla il codice seguente nel nuovo modulo:
Sub hello()
MsgBox "Hello World !"
End Sub
Ottenere :
Fare clic sulla freccia verde "play" (o premere F5) nella barra degli strumenti di Visual Basic per eseguire il programma:
Seleziona il nuovo sottotitolo creato "ciao" e fai clic su
Run
:Fatto, dovresti vedere la seguente finestra:
Introduzione al modello a oggetti di Excel
Questo esempio intende essere un'introduzione delicata al modello a oggetti di Excel per i principianti .
- Aprire Visual Basic Editor (VBE)
- Fai clic su Visualizza -> Finestra immediata per aprire la finestra immediata (o ctrl + G ):
- Dovresti vedere la seguente finestra immediata in fondo su VBE:
Questa finestra ti consente di testare direttamente alcuni codici VBA. Quindi, iniziamo, digitare questa console:
?Worksheets.
VBE ha intellisense e quindi dovrebbe aprire un tooltip come nella seguente figura:
Selezionare .Count nella lista o digitare direttamente .Cout
per ottenere:
?Worksheets.Count
- Quindi premere Invio. L'espressione viene valutata e deve restituire 1. Indica il numero di fogli di lavoro attualmente presenti nella cartella di lavoro. Il punto interrogativo (
?
) È un alias per Debug.Print.
I fogli di lavoro è un oggetto e il conteggio è un metodo . Excel ha diversi oggetti ( Workbook
, Worksheet
, Range
, Chart
...) e ognuno di essi contiene metodi e proprietà specifici. È possibile trovare l'elenco completo di oggetti nel riferimento VBA di Excel . Fogli di lavoro L'oggetto è presentato qui .
Questo riferimento VBA di Excel dovrebbe diventare la principale fonte di informazioni per quanto riguarda il modello a oggetti di Excel.
- Ora proviamo un'altra espressione, scrivi (senza il carattere
?
):
Worksheets.Add().Name = "StackOveflow"
- Premere Invio. Questo dovrebbe creare un nuovo foglio di lavoro chiamato
StackOverflow.
:
Per comprendere questa espressione è necessario leggere la funzione Aggiungi nel già citato riferimento Excel. Troverete quanto segue:
Add: Creates a new worksheet, chart, or macro sheet.
The new worksheet becomes the active sheet.
Return Value: An Object value that represents the new worksheet, chart,
or macro sheet.
Quindi il Worksheets.Add()
crea un nuovo foglio di lavoro e lo restituisce. Il foglio di lavoro ( senza s ) è di per sé un oggetto che può essere trovato nella documentazione e il Name
è una delle sue proprietà (vedi qui ). È definito come:
Worksheet.Name Property: Returns or sets a String value that
represents the object name.
Quindi, esaminando le diverse definizioni di oggetti, siamo in grado di comprendere questo codice Worksheets.Add().Name = "StackOveflow"
.
Add()
crea e aggiunge un nuovo foglio di lavoro e restituisce un riferimento , quindi impostiamo la proprietà Name su "StackOverflow"
Ora cerchiamo di essere più formale, Excel contiene diversi oggetti. Questi oggetti possono essere composti da una o più raccolte di oggetti Excel della stessa classe. È il caso dei WorkSheets
di WorkSheets
che è una raccolta di oggetti del Worksheet
di Worksheet
. Ogni oggetto ha alcune proprietà e metodi con cui il programmatore può interagire.
Il modello di oggetto di Excel fa riferimento alla gerarchia di oggetti di Excel
Nella parte superiore di tutti gli oggetti è l'oggetto Application
, rappresenta l'istanza di Excel stessa. La programmazione in VBA richiede una buona comprensione di questa gerarchia perché abbiamo sempre bisogno di un riferimento a un oggetto per poter chiamare un metodo o impostare / ottenere una proprietà.
Il modello di oggetti Excel (molto semplificato) può essere rappresentato come,
Application
Workbooks
Workbook
Worksheets
Worksheet
Range
Di seguito è riportata una versione più dettagliata per l'oggetto foglio di lavoro (come in Excel 2007),
Il modello di oggetti Excel completo può essere trovato qui .
Infine alcuni oggetti potrebbero avere events
(es: Workbook.WindowActivate
) che fanno anche parte del modello a oggetti di Excel.