excel-vbaIniziare con excel-vba


Osservazioni

Microsoft Excel include un linguaggio di programmazione macro completo chiamato VBA. Questo linguaggio di programmazione ti fornisce almeno tre risorse aggiuntive:

  1. 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.
  2. Crea nuove funzioni di foglio di lavoro personalizzate.
  3. 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 classe WorksheetFunction e i rispettivi metodi
    Usare l'enumerazione xlDirection per navigare in un intervallo

  • esempi fuori tema:

    Come creare un ciclo "per ogni"
    Classe MsgBox 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

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.

inserisci la descrizione dell'immagine qui

Passaggio 1 : selezionare Strumenti menu -> Riferimenti ... inserisci la descrizione dell'immagine qui

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 ". inserisci la descrizione dell'immagine qui

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. inserisci la descrizione dell'immagine qui

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. inserisci la descrizione dell'immagine qui

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. inserisci la descrizione dell'immagine qui

Dichiarare un'altra variabile che fa riferimento all'oggetto Slide della libreria di oggetti di PowerPoint. inserisci la descrizione dell'immagine qui

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. inserisci la descrizione dell'immagine qui

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
 

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:

MSDN-dichiarare le variabili

Digitare caratteri (Visual Basic)

Introduzione al modello a oggetti di Excel

Questo esempio intende essere un'introduzione delicata al modello a oggetti di Excel per i principianti .


  1. Aprire Visual Basic Editor (VBE)
  2. Fai clic su Visualizza -> Finestra immediata per aprire la finestra immediata (o ctrl + G ):

inserisci la descrizione dell'immagine qui

  1. Dovresti vedere la seguente finestra immediata in fondo su VBE:

inserisci la descrizione dell'immagine qui

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:

inserisci la descrizione dell'immagine qui

Selezionare .Count nella lista o digitare direttamente .Cout per ottenere:

?Worksheets.Count
 
  1. 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.

  1. Ora proviamo un'altra espressione, scrivi (senza il carattere ? ):
Worksheets.Add().Name = "StackOveflow"
 
  1. Premere Invio. Questo dovrebbe creare un nuovo foglio di lavoro chiamato StackOverflow. :

inserisci la descrizione dell'immagine qui

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),

inserisci la descrizione dell'immagine qui

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.

Ciao mondo

  1. Aprire l'editor di Visual Basic (vedere Apertura dell'editor di Visual Basic )
  2. Fai clic su Inserisci -> Modulo per aggiungere un nuovo modulo:

inserisci la descrizione dell'immagine qui

  1. Copia e incolla il codice seguente nel nuovo modulo:
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

Ottenere :

inserisci la descrizione dell'immagine qui

  1. Fare clic sulla freccia verde "play" (o premere F5) nella barra degli strumenti di Visual Basic per eseguire il programma: inserisci la descrizione dell'immagine qui

  2. Seleziona il nuovo sottotitolo creato "ciao" e fai clic su Run : inserisci la descrizione dell'immagine qui

  3. Fatto, dovresti vedere la seguente finestra:

inserisci la descrizione dell'immagine qui

Apertura di Visual Basic Editor (VBE)


Passaggio 1: aprire una cartella di lavoro

inserisci la descrizione dell'immagine qui


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.

inserisci la descrizione dell'immagine qui

Quindi, vai alla scheda sviluppatore e fai clic su "Visualizza codice" o "Visual Basic"

inserisci la descrizione dell'immagine qui

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):

inserisci la descrizione dell'immagine qui