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 Subset Product X Subset Product Y subset specifieke code VBA Basisfunctionaliteit (Microsoft en anderen) uniforme code tekening uit boek "VBA voor Word, Excel en Access"
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 = Object UserForm Code onder forms Code = onder Word: Documenten onder Excel: Book & Sheets onder Powerpoint: Presentations References slide van Peter Demasure
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) Dim a As Boolean a = MsgBox("Wil je écht opslaan?", vbyesno) variabele declaratie 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 true or false Integer 16 bits -> van - 2^15 tot 2^15-1 Long 32 bits -> van - 2^31 tot 2^31-1 Double 64 bits -> van - 2^63 tot 2^63-1 Date bestemd voor datums Object verwijzing naar object (bv. WorkSheet) String tekengegevens (bv. "appel") Variant 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 <naam> As <type> 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: schrijven: Gevolgen: Dim strmijnnaam As String Dim strmijnnaam 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 Oefening 2: en arrays 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 Oefening 2: en arrays
Constanten, variabelen, declaraties Oefening 2 - uitbreiding: Pas oefening 2 aan zodat: Wanneer je een getal ingeeft het programma een foutmelding toont en stopt Tips: en arrays 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