excel-vbaAan de slag met excel-vba


Opmerkingen

Microsoft Excel bevat een uitgebreide macro-programmeertaal genaamd VBA. Deze programmeertaal biedt u ten minste drie extra bronnen:

  1. Stuur Excel automatisch vanuit code met behulp van macro's. Voor het grootste deel kan alles wat de gebruiker kan doen door Excel vanuit de gebruikersinterface te manipuleren, worden gedaan door code in Excel VBA te schrijven.
  2. Maak nieuwe, aangepaste werkbladfuncties.
  3. Interactie Excel met andere applicaties zoals Microsoft Word, PowerPoint, Internet Explorer, Kladblok, etc.

VBA staat voor Visual Basic for Applications. Het is een aangepaste versie van de eerbiedwaardige programmeertaal Visual Basic die sinds het midden van de jaren negentig de macro's van Microsoft Excel heeft aangedreven.

BELANGRIJK
Zorg ervoor dat alle voorbeelden of onderwerpen die in de excel-vba-tag zijn gemaakt, specifiek en relevant zijn voor het gebruik van VBA met Microsoft Excel. Alle voorgestelde onderwerpen of voorbeelden die generiek zijn voor de VBA-taal moeten worden geweigerd om dubbele inspanningen te voorkomen.

  • voorbeelden op onderwerp:

    Creëren van en interactie met werkbladobjecten
    De klasse WorksheetFunction en de respectieve methoden
    De xlDirection opsomming gebruiken om door een bereik te navigeren

  • off-topic voorbeelden:

    Hoe maak je een 'voor elke' lus
    MsgBox klasse en hoe een bericht wordt weergegeven
    Win WinAPI gebruiken in VBA


versies

VB

Versie Publicatiedatum
VB6 1998/10/01
VB7 2001/06/06
WIN32 1998/10/01
Win64 2001/06/06
MAC 1998/10/01

uitmunten

Versie Publicatiedatum
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

Een nieuwe referentie voor objectbibliotheek toevoegen

De procedure beschrijft hoe u een objectbibliotheekreferentie kunt toevoegen en daarna hoe u nieuwe variabelen kunt declareren met verwijzing naar de nieuwe bibliotheekklasseobjecten.

Het onderstaande voorbeeld laat zien hoe u de PowerPoint- bibliotheek aan het bestaande VB-project kunt toevoegen. Zoals te zien is, is de PowerPoint-objectbibliotheek momenteel niet beschikbaar.

voer hier de afbeeldingsbeschrijving in

Stap 1 : Selecteer Menu Tools -> Referenties… voer hier de afbeeldingsbeschrijving in

Stap 2 : Selecteer de referentie die u wilt toevoegen. In dit voorbeeld scrollen we naar beneden om “ Microsoft PowerPoint 14.0 Objectbibliotheek ” te vinden en drukken vervolgens op “ OK ”. voer hier de afbeeldingsbeschrijving in

Opmerking: PowerPoint 14.0 betekent dat de Office 2010-versie op de pc is geïnstalleerd.

Stap 3 : in de VB Editor krijgt u, zodra u tegelijkertijd op Ctrl + Space drukt, de optie voor automatisch aanvullen van PowerPoint. voer hier de afbeeldingsbeschrijving in

Na het selecteren van PowerPoint en drukken op . verschijnt een ander menu met alle objectenopties die verband houden met de PowerPoint-objectbibliotheek. Dit voorbeeld laat zien hoe u de PowerPoint object te selecteren Application . voer hier de afbeeldingsbeschrijving in

Stap 4 : Nu kan de gebruiker meer variabelen declareren met behulp van de PowerPoint-objectbibliotheek.

Declareer een variabele die verwijst naar het Presentation object van de PowerPoint-objectbibliotheek. voer hier de afbeeldingsbeschrijving in

Declareer een andere variabele die verwijst naar het object Slide van de PowerPoint-objectbibliotheek. voer hier de afbeeldingsbeschrijving in

Nu ziet het gedeelte met de variabelenaangifte eruit in de onderstaande schermafbeelding en kan de gebruiker deze variabelen in zijn code gaan gebruiken. voer hier de afbeeldingsbeschrijving in

Codeversie van deze zelfstudie:

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
 

Variabelen declareren

Om variabelen in VBA expliciet te declareren, gebruikt u de instructie Dim , gevolgd door de naam en het type van de variabele. Als een variabele wordt gebruikt zonder te worden gedeclareerd, of als er geen type is opgegeven, krijgt deze het type Variant .

Gebruik de instructie Option Explicit op de eerste regel van een module om alle variabelen vóór gebruik te declareren (zie ALTIJD "Option Explicit" gebruiken ).

Het gebruik van Option Explicit wordt altijd sterk aanbevolen, omdat het helpt typefouten / spelfouten te voorkomen en ervoor zorgt dat variabelen / objecten hun beoogde type behouden.

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
 

Meerdere variabelen kunnen op een enkele regel worden gedeclareerd met komma's als scheidingstekens, maar elk type moet afzonderlijk worden gedeclareerd , anders gaan ze standaard naar het Variant type.

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
 

Variabelen kunnen ook worden opgegeven met achtervoegsels voor gegevenstypekarakters ($% &! # @), Maar het gebruik hiervan wordt steeds meer afgeraden.

 Dim this$  'String
 Dim this%  'Integer
 Dim this&  'Long
 Dim this!  'Single
 Dim this#  'Double
 Dim this@  'Currency
 

Andere manieren om variabelen te declareren zijn:

  • Static zoals: Static CounterVariable as Integer

Wanneer u de Statische instructie gebruikt in plaats van een Dim-instructie, behoudt de gedeclareerde variabele zijn waarde tussen aanroepen.

  • Public like: Public CounterVariable as Integer

Openbare variabelen kunnen in alle procedures in het project worden gebruikt. Als een openbare variabele wordt gedeclareerd in een standaardmodule of een klassemodule, kan deze ook worden gebruikt in projecten die verwijzen naar het project waar de openbare variabele wordt gedeclareerd.

  • Private zoals: Private CounterVariable as Integer

Privévariabelen kunnen alleen worden gebruikt door procedures in dezelfde module.

Bron en meer info:

MSDN-declarerende variabelen

Typ tekens (Visual Basic)

Aan de slag met het Excel-objectmodel

Dit voorbeeld is bedoeld als een zachte introductie tot het Excel-objectmodel voor beginners .


  1. Open de Visual Basic Editor (VBE)
  2. Klik op Beeld -> Direct venster om het directe venster (of ctrl + G ) te openen:

voer hier de afbeeldingsbeschrijving in

  1. U zou het volgende directe venster onderaan op VBE moeten zien:

voer hier de afbeeldingsbeschrijving in

Met dit venster kunt u direct een aantal VBA-code testen. Laten we beginnen, typ deze console:

?Worksheets. 
 

VBE heeft intellisense en moet vervolgens een knopinfo openen zoals in de volgende afbeelding:

voer hier de afbeeldingsbeschrijving in

Selecteer .Count in de lijst of typ .Cout om te verkrijgen:

?Worksheets.Count
 
  1. Druk vervolgens op Enter. De uitdrukking wordt geëvalueerd en moet 1 retourneren. Dit geeft het aantal werkbladen aan dat momenteel in de werkmap aanwezig is. Het vraagteken ( ? ) Is een alias voor Debug.Print.

Werkbladen is een object en Count is een methode . Excel heeft verschillende objecten ( Workbook , Worksheet , Range , Chart ...) en elk daarvan bevat specifieke methoden en eigenschappen. U vindt de volledige lijst met Object in de Excel VBA-referentie . Werkbladen Object wordt hier gepresenteerd.

Deze Excel VBA-referentie moet uw primaire informatiebron worden met betrekking tot het Excel-objectmodel.

  1. Laten we nu een andere uitdrukking proberen, type (zonder het ? -Teken):
Worksheets.Add().Name = "StackOveflow"
 
  1. Druk op Enter. Dit zou een nieuw werkblad met de naam StackOverflow. moeten creëren StackOverflow. :

voer hier de afbeeldingsbeschrijving in

Om deze uitdrukking te begrijpen, moet u de functie Toevoegen in de bovengenoemde Excel-verwijzing lezen. U zult het volgende vinden:

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.
 

Dus de Worksheets.Add() maken een nieuw werkblad en retourneren het. Werkblad ( zonder s ) is zelf een object dat te vinden is in de documentatie en Name is een van de eigenschappen (zie hier ). Het is gedefinieerd als:

Worksheet.Name Property:  Returns or sets a String value that 
 represents the object name.
 

Door de verschillende objectdefinities te onderzoeken, kunnen we deze code Worksheets.Add().Name = "StackOveflow" begrijpen Worksheets.Add().Name = "StackOveflow" .

Add() maakt en voegt een nieuw werkblad toe en retourneert een verwijzing ernaar, vervolgens stellen we de eigenschap Name in op "StackOverflow"


Laten we nu formeler zijn, Excel bevat verschillende objecten. Deze objecten kunnen bestaan uit een of meerdere verzameling (en) van Excel-objecten van dezelfde klasse. Dit is het geval voor WorkSheets , een verzameling Worksheet . Elk object heeft enkele eigenschappen en methoden waarmee de programmeur kan communiceren.

Het Excel- objectmodel verwijst naar de Excel- objecthiërarchie

Bovenaan alle objecten staat het Application , het vertegenwoordigt de Excel-instantie zelf. Programmeren in VBA vereist een goed begrip van deze hiërarchie omdat we altijd een verwijzing naar een object nodig hebben om een methode te kunnen aanroepen of om een eigenschap in te stellen / te krijgen.

Het (zeer vereenvoudigde) Excel-objectmodel kan worden weergegeven als,

                            Application
                             Workbooks
                             Workbook
                            Worksheets
                             Worksheet
                              Range
 

Een meer gedetailleerde versie voor het werkbladobject (zoals het is in Excel 2007) wordt hieronder weergegeven,

voer hier de afbeeldingsbeschrijving in

De volledige Excel Object Model kunnen worden gevonden hier .

Ten slotte kunnen sommige objecten events (bijvoorbeeld: Workbook.WindowActivate ) die ook deel uitmaken van het Excel-objectmodel.

Hallo Wereld

  1. Open de Visual Basic Editor (zie Visual Basic Editor openen )
  2. Klik op Invoegen -> Module om een nieuwe module toe te voegen:

voer hier de afbeeldingsbeschrijving in

  1. Kopieer en plak de volgende code in de nieuwe module:
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

Verkrijgen :

voer hier de afbeeldingsbeschrijving in

  1. Klik op de groene "play" -pijl (of druk op F5) op de Visual Basic-werkbalk om het programma uit te voeren: voer hier de afbeeldingsbeschrijving in

  2. Selecteer de nieuw gemaakte sub "hallo" en klik op Run : voer hier de afbeeldingsbeschrijving in

  3. Klaar, je zou het volgende venster moeten zien:

voer hier de afbeeldingsbeschrijving in

Visual Basic Editor (VBE) openen


Stap 1: Open een werkmap

voer hier de afbeeldingsbeschrijving in


Stap 2 Optie A: Druk op Alt + F11

Dit is de standaard sneltoets om de VBE te openen.

Stap 2 Optie B: tabblad Ontwikkelaar -> Bekijk code

Eerst moet het tabblad Ontwikkelaar aan het lint worden toegevoegd. Ga naar Bestand -> Opties -> Lint aanpassen en vink het vakje voor ontwikkelaar aan.

voer hier de afbeeldingsbeschrijving in

Ga vervolgens naar het tabblad ontwikkelaar en klik op "Code weergeven" of "Visual Basic"

voer hier de afbeeldingsbeschrijving in

Stap 2 Optie C: tabblad Weergave> Macro's> Klik op de knop Bewerken om een bestaande macro te openen

Alle drie van deze opties openen de Visual Basic Editor (VBE):

voer hier de afbeeldingsbeschrijving in