excel-vba Zelfstudie
Aan de slag met excel-vba
Zoeken…
Opmerkingen
Microsoft Excel bevat een uitgebreide macro-programmeertaal genaamd VBA. Deze programmeertaal biedt u ten minste drie extra bronnen:
- 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.
- Maak nieuwe, aangepaste werkbladfuncties.
- 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 klasseWorksheetFunction
en de respectieve methoden
✓ DexlDirection
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 |
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:
Visual Basic Editor (VBE) openen
Stap 1: Open een werkmap
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.
Ga vervolgens naar het tabblad ontwikkelaar en klik op "Code weergeven" of "Visual Basic"
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):
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.
Stap 1 : Selecteer Menu Tools -> Referenties…
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 ”.
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.
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
.
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.
Declareer een andere variabele die verwijst naar het object Slide
van de PowerPoint-objectbibliotheek.
Nu ziet het gedeelte met de variabelenaangifte eruit in de onderstaande schermafbeelding en kan de gebruiker deze variabelen in zijn code gaan gebruiken.
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
Hallo Wereld
- Open de Visual Basic Editor (zie Visual Basic Editor openen )
- Klik op Invoegen -> Module om een nieuwe module toe te voegen:
- Kopieer en plak de volgende code in de nieuwe module:
Sub hello()
MsgBox "Hello World !"
End Sub
Verkrijgen :
Klik op de groene "play" -pijl (of druk op F5) op de Visual Basic-werkbalk om het programma uit te voeren:
Klaar, je zou het volgende venster moeten zien:
Aan de slag met het Excel-objectmodel
Dit voorbeeld is bedoeld als een zachte introductie tot het Excel-objectmodel voor beginners .
- Open de Visual Basic Editor (VBE)
- Klik op Beeld -> Direct venster om het directe venster (of ctrl + G ) te openen:
- U zou het volgende directe venster onderaan op VBE moeten zien:
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:
Selecteer .Count in de lijst of typ .Cout
om te verkrijgen:
?Worksheets.Count
- 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.
- Laten we nu een andere uitdrukking proberen, type (zonder het
?
-Teken):
Worksheets.Add().Name = "StackOveflow"
- Druk op Enter. Dit zou een nieuw werkblad met de naam
StackOverflow.
moeten creërenStackOverflow.
:
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,
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.