Inleiding Visual Basic en VBA Karel Nijs 2009/01
Leswijze • Eerst wat theorie • Begeleid met (korte) oefeningen – Ms Excel 2003
• Online hulp: – – – –
http://www.ozgrid.com/VBA/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx http://www.microsoft.com/technet/scriptcenter/topics/office/vba.mspx http://www.kbcopenleren.be/
• Offline hulp (op CD-ROM): – Boek "VBA voor Word, Excel en Access" – VBA-handleiding - vanuit Excel.doc
• Korte pauze rond 20u
Inleiding Visual Basic en VBA: intro • • • • • • •
Inleiding tot programmeren Visual Basic intro Constanten, variabelen, declaraties en arrays Operatoren Selecties en iteraties Functies en subroutines Werken met bestanden
Inleiding Visual Basic en VBA– les 1 • Inleiding tot programmeren • Visual Basic intro • Constanten, variabelen, declaraties en arrays
Inleiding tot programmeren • Presentatie OpenLeren: – – – – –
Digitaal vs. analoog De "Von Neumann" computer Van High Level (HLL) tot Low Level Language (LLL) Compiler vs. interpreter Generation languages
Inleiding Visual Basic en VBA– les 1 • Inleiding tot programmeren • Visual Basic intro • Constanten, variabelen, declaraties en arrays
Visual Basic intro • • • •
Geschiedenis, beschikbaarheid en verschillen De Visual Basic Editor (VBE) Het intermediate venster Het debug venster
Geschiedenis, beschikbaarheid en verschillen • Visual Basic (VB) – Door Microsoft ontworpen in 1991 – Programmeren van op Windows gebaseerde programma's – 'visual' • Gebruikersinterfaces visualiseren • Interface voorzien van componenten (bv. tekstvak)
– Zeer uitgebreide taal – Uitbreidbaar mbv. references voor componenten, controls, enz. – Te compileren
Geschiedenis, beschikbaarheid en verschillen • Visual Basic for Applications (VBA) – Afgeleide van VB – Géén standalone taal, leeft bij host-applicatie • Voorbeeld hosts: Ms Office, Visio, AutoCAD, ...
– Laat toe de host-applicatie aan te passen – Gebruiksgemak: codegeneratie mbv. macro's – Script-taal (géén compilatie)
Geschiedenis, beschikbaarheid en verschillen • Visual Basic Script (VBS) – – – –
Afgeleid van VBA in 1996 Samenwerking met HTML (websites) Gebruikt voor Internet en intranet Niet ondersteund door alle browsers • Beter: JavaScript
– Script-taal (géén compilatie; geïnterpreteerd door browser) – Tutorial: http://www.w3schools.com/vbscript/default.asp
Geschiedenis, beschikbaarheid en verschillen Visual Basic
Visual Basic for Applications
VBscript
Geschiedenis, beschikbaarheid en verschillen Source Code (HLL) VB
VB
COMPILER
VBA
Native Code
INTERPRETER HARDWARE
slide van Peter Demasure
Geschiedenis, beschikbaarheid en verschillen • Subsets – VBA is een gelaagde programmeertaal – Basisfunctionaliteit is hetzelfde voor elke toepassing – Elke toepassing heeft deelverzameling van instructies en mogelijkheden – Programmeren binnen de basislaag werkt in elke subset – Subset A code werkt niet automatisch in Subset B
Geschiedenis, beschikbaarheid en verschillen • Subsets
Subset Ms Word
Subset Ms Excel Subset Ms Access VBA Basisfunctionaliteit (Microsoft en anderen)
tekening uit boek "VBA voor Word, Excel en Access"
Subset Subset Product Product Y X
subset specifieke code
uniforme code
Geschiedenis, beschikbaarheid en verschillen • Visual Basic for Applications: voordelen – Gebruiksgemak (tov. VB): code generatie mbv. macro's – Host-applicatie uitbreiden met niet-standaard mogelijkheden – Repetitief werk automatiseren – Vanuit één applicatie de andere besturen • Bv. Ms Word documenten aanmaken vanuit Ms Excel
Visual Basic intro • • • •
Geschiedenis, beschikbaarheid en verschillen De Visual Basic Editor (VBE) Het intermediate venster Het debug venster
De Visual Basic Editor (VBE) • Ontwikkelingsomgeving beschikbaar in elke subset • ~ editor voor Visual Basic • De programmacode wordt opgeslagen bij je document net zoals bij macro's! • De VBE bevat alle hulpmiddelen voor programmatie – – – –
Objecten browser Immediate window Debugger ...
De Visual Basic Editor (VBE) •
Demo- opstarten van de VBE: 1. Start Ms Excel 2. Toon de "Visual Basic" werkbalk
3. Docent geeft basisuitleg
•
Demo – opstarten van de object browser
•
Demo – het intermediate window
De Visual Basic Editor (VBE) •
Oefening 1 – scopes en beveiliging: –
Deel 1: •
Maak een nieuw Excel werkboek aan: vba_les1_oef1.xls
•
Kopieer & plak volgende code in ThisWorkbook: O:\wissel\VB_en_VBA_introductie\oef1.txt
• •
–
Sla je werkboek op. Wijzig je werkboek + sla opnieuw op.
Deel 2: • • • •
Sluit Excel af. Heropen je oefening vba_les1_oef1.xls Bij de waarschuwing: kies " Macro's uitschakelen". Wijzig je werkboek + sla opnieuw op.
De Visual Basic Editor (VBE) •
Oefening 1 – scopes en beveiliging: –
Deel 3: • • • • • • •
–
Sluit Excel af. Heropen je oefening vba_les1_oef1.xls Bij de waarschuwing: kies "Macro's inschakelen". Maak een nieuwe module aan. Verplaats de code van ThisWorkbook naar je module Sla je werkboek op. Wijzig je werkboek + sla opnieuw op.
Besluit: • •
Wat was het gevolg van deel 2? Wat was het gevolg van deel 3?
De Visual Basic Editor (VBE) •
De project explorer omvat:
Algemene Modules
Forms =
slide van Peter Demasure
Object UserForm
Code onder forms
Code =
onder Word: Documenten
onder Excel: Book & Sheets
onder Powerpoint: Presentations
References
De Visual Basic Editor (VBE) •
Wij spreken af:
slide van Peter Demasure
Algemene Modules = Code onder de algemene modules Forms = Formcode
Object UserForm
Code onder forms
Code = OfficeCode
onder Word: Documenten
onder Excel: Book & Sheets
onder Powerpoint: Presentations
Globaal hebben wij het over alle modules
References naar ander Projecten bevatten geen code op zich
De Visual Basic Editor (VBE) •
De code:
Option Explicit
declaratie van variabelen vereist procedure wordt opgeroepen bij elke save
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean)
variabele declaratie
Dim a As Boolean a = MsgBox("Wil je écht opslaan?", vbYesNo) If a = vbNo Then Cancel = True End If End Sub
functie met terugkeerwaarde conditie die de variabele "a" test terugkeerwaarde opslaan
Inleiding Visual Basic en VBA– les 1 • Inleiding tot programmeren • Visual Basic intro • Constanten, variabelen, declaraties en arrays
Constanten, variabelen, declaraties en arrays •
Variabelen – Gegevens opslaan in geheugen – Slechts geldig tijdens uitvoeren van het programma – Verschillende gegevenstypes mogelijk: •
Boolean
•
Integer
•
Long
•
Double
•
Date
•
Object
•
String
•
Variant
•
...
true or false 16 bits -> van - 2^15 tot 2^15 -1 32 bits -> van - 2^31 tot 2^31 -1 64 bits -> van - 2^63 tot 2^63 -1 bestemd voor datums verwijzing naar object (bv. WorkSheet) tekengegevens (bv. "appel") kan alle types bevatten
Constanten, variabelen, declaraties en arrays •
Variabelen – Elke variabele heeft een unieke naam •
Conventies: – – – –
•
Eerste teken moet letter zijn Spaties, punten en komma's zijn niet toegelaten Leestekens #, %, !, &, $ zijn niet toegelaten Max lengte = 254 karakters
CamelCase + Hungarian notation: – Bv. strElkWoordEenNieuweHoofdletter
•
Voorbeeld: – strNaamKlant – iAantalJaren
Constanten, variabelen, declaraties en arrays •
Declaraties – Compiler informeren van bestaan: naam + gegevenstype – Keywoord = Dim •
Dim
As
•
Bv. Dim strMijnNaam As String
– Niet verplicht om variabelen an sich te declareren • •
Veroorzaakt errors bij ontbreken Afdwingen door Option Explicit boven elke code te zetten – Eénmalig bovenaan in het bestand dat de code bevat
•
Zie ook oefening 1
Constanten, variabelen, declaraties en arrays •
Declaraties – Niet verplicht om type te declareren •
In plaats van: Dim strMijnNaam As String
schrijven: Dim strMijnNaam
•
Gevolgen: – Wordt achterliggend als Variant gedeclareerd: Dim strMijnNaam As Variant – Variant kan álle types bevatten
– Nadelen: » Trager » Meer geheugengebruik (te vermijden)
Constanten, variabelen, declaraties en arrays •
Declaraties – Afspraken: •
Naamgeving volgens combinatie CamelCase en Hungarian notation – Bv. strElkWoordEenNieuweHoofdletter
• •
Altijd Option Explicit bovenaan elke code bestand Altijd een gegevenstype declareren – Bv. Dim strMijnNaam As String
Constanten, variabelen, declaraties en arrays •
Oefening 2: – Pas de Workbook_BeforeSave methode aan zodat: • • •
Aan de gebruiker een eerste getal gevraagd wordt. Aan de gebruiker een tweede getal gevraagd wordt. Aan de gebruiker de som getoond wordt.
– Tips: • •
Een waarde aan de gebruiker kan je opvragen met de functie InputBox Om een bericht te tonen: zie oefening 1
Constanten, variabelen, declaraties en arrays •
Oefening 2:
Constanten, variabelen, declaraties en arrays •
Oefening 2- uitbreiding: – Pas oefening 2 aan zodat: •
Wanneer je een getal ingeeft het programma een foutmelding toont en stopt
– Tips: •
De Information module in de VBA bibliotheek
Huiswerk •
Uit het boek "VBA voor Word, Excel en Access": – Lees hoofdstukken 1, 2 en 6 – Maar vooral ook hoofdstuk 7! •
http://www.ozgrid.com/VBA/variables.htm