1 / 24

VBA

VBA. Visual Basics for Applications: eigen Office versie vanaf Office2000 gelijk voor alle applicaties Programmeren onder meer nodig voor Het schrijven van eigen functies om invoer te controleren, categorieën te vormen of waarden te berekenen Eventafhandeling

Download Presentation

VBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VBA • Visual Basics for Applications: eigen Office versie • vanaf Office2000 gelijk voor alle applicaties • Programmeren onder meer nodig voor • Het schrijven van eigen functies om invoer te controleren, categorieën te vormen of waarden te berekenen • Eventafhandeling • Een directe toegang tot de databaseobjecten • Access kent ook macro’s als tussenvorm. Deze worden waarschijnlijk in volgende versies niet meer ondersteund, we zullen er daarom niet mee werken.

  2. Waar staan je functies/procedures? VBA code kan staan in een class-module: in het codeblok behorend bij een formulier in het codeblok behorend bij een rapport te vinden via het icoon Code op de taakbalk bij het betreffende tabblad of in Design View VBA code kan ook staan in een algemene module voor procedures en functies die vanuit de gehele database toegankelijk zijn te vinden/ maken onder het tabblad Modules

  3. Programmeren in VBA Algemene syntaxregels VBA: Statements beeindig je via ENTER-toets Als een te lang statement naar de volgende regel moet doorlopen, geef je dat aan met _ (spatie + underscore) Een ' geeft aan dat de rest van de regel commentaar is Practicum regels: Gebruik Option Explicit Geef je variabelen een prefix mee met datatype Geef voldoende commentaar bij je programma (met ' )

  4. Datatypering Expliciete datatypering: goede programmeerstijl In de Access Modules wordt dit afgedwongen via OPTION EXPLICIT (default) bovenin Datatypering variabelen: Public intBookCount As Integer (public var.) Dim strTitle As String (local var.) Naast variabelen kun je ook constanten definiëren: Const OurCompany = “The Greatest” Const MaxSalary = 100.000

  5. Datatypen in VBA (wat voorbeelden) prefix Var Type Size Range of values bln Boolean 1 byte True or False int Integer 2 bytes -32.768 - +32.767 lng Long 4 bytes ± 2.147.483.647 dbl Double 8 bytes ± 3.4E38 cur Currency 8 bytes scaled integer(4dec) dtm Date/Time 8 bytes 1/1/100-12/31/9999 str String var: 10 + lng <= 2 billion char fixed: lng up to 65.400 char var Variant 16 bytes Number: as Double 22 b + lng String: as String

  6. Functies en procedures schrijven Je schrijft eigen functies/procedures dus in algemene modules of in class modules. De editor biedt hulp door het aanbieden van mogelijke invullingen (keuzelijsten: OK, klik Tab) en het melden van fouten. Na elk statement geef je een ENTER Met spatie + underscore ( _) geef je aan dat een statement nog doorloopt op de volgende regel In het Debug Window (onder View) kun je je functie of procedure direct testen. Access 2000: Immediate Window.

  7. Functie - Subroutine Function <functienaam> (argumenten met datatype) As <datatype van resultaat> code, (evt.) leidend tot <functienaam> = ….. End function Functies kunnen een waarde als resultaat geven Sub <procedurenaam> (argumenten met datatype) code End Sub Subroutines regelen acties Functies en subroutines kunnen vanuit andere functies of sub procedures worden aangeroepen

  8. Voorbeeld van een functie Function intOppervlak (intLengte As Integer, intBreedte _ As Integer) As Integer intOppervlak = intLengte * intBreedte End Function Dus: datatypering van argumenten en resultaat resultaat in de variable <functienaam> Statements eindigen door een RETURN, een spatie + underscore is het teken dat een statement doorloopt naar de volgende regel

  9. Voorbeeld van sub procedures Sub Welkom() Debug.Print "Hallo! Welkom!" End Sub Sub Welkom(strNaam As String) Debug.Print "Hallo " & strNaam & "!" End Sub Datatypering van eventuele argumenten Geen waarde als uitvoer, maar acties. NB Debug.Print is geen ‘normale’ opdracht voor in een applicatie, maar kun je gebruiken om je code te testen!

  10. Testen van functies en procedures Functie: in het Debug-Window aan te roepen: ? <functienaam> (arg1, arg2) vraagteken + haakjes Sub: zonder argumenten: door cursor in code te zetten en Run:Go te klikken met argumenten: in Debug-Window: <sub naam> arg1, arg2 zonder meer! of Call <sub naam> (arg1, arg2)

  11. HELP Als je een VBA functie of constante in hebt getikt en de cursor erop staat krijg je via F1 direct informatie NB: Help in practicumzalen werkt niet altijd! Als je een bestaande functie of procedure aan het intikken bent in module zelf of in Debug (Immediate) Window krijg je direct informatie over de parameters Via de Object Browser kun je allerlei informatie vinden

  12. If ... Then If Condition Then statements ElseIf AnotherCondition Then statements (meerdere ElseIf mogelijk) Else statements End If Sub testIfThen (intCijfer As Integer) If intCijfer >= 7 Then Debug.Print “Prima” ElseIf intCijfer >= 5 Then Debug.Print “Kon beter” Else Debug.Print “Overnieuw!” End If End Sub

  13. Case statement Syntax Voorbeeld Select Case VarName Select Case intLeeftijd Case Value1 Case Is < 12 Statements strCat=“kind” Case Value2 To Value4 Case 12 To 17 Statements strCat=“puber” Case Is <Vergelijkingsexp> Case 18 Statements strCat=“grens” Case Else Case 19 To 64 Statements strCat=“volw” End Select Case Else strCat=“oudere” End Select

  14. Een categoriseringsfunctie (b.v. voor in SQL!) Function strCat(intLeeftijd As Integer) As String Select Case intLeeftijd Case Is < 12 strCat=“kind” Case 12 To 17 strCat=“puber” Case 18 strCat=“grens” Case Else strCat=“volwassene” End Select End Function SQL: SELECT naam, strCat(Leeftijd) FROM Personen

  15. Do while / Do until Do {While | Until} Condition statements Loop (test vóór de eerste uitvoering van statements) Do statements Loop {While | Until} Condition (test na de eerste uitvoering van statements) OF

  16. Voorbeeld van Do While (1) Sub Tafelvan3() Dim intTeller As Integer intTeller = 1 Do While intTeller <= 10 Debug.Print intTeller; " x 3 = ” ; intTeller * 3 intTeller = intTeller + 1 Loop End Sub Kun je nu ook een gevraagde tafel (parameter) af laten drukken? En alle tafels laten afdraaien? concatenatie:je kunt hierkiezen tussen & of ;

  17. Voorbeeld van Do While (2) Sub Wachten() Dim d1 As Date Dim d2 As Date d1 = Now() d2 = Now() Debug.Print "Even pauze.." Do While DateDiff("s", d1, d2) < 5 d2 = Now() Loop Debug.Print "Ga maar verder!" End Sub

  18. MsgBox MsgBox Messagestring Dim StrName AS String strName = “Margreet” MsgBox (“Goedemorgen “ & strName & “!”) of MsgBox “Goedemorgen “ & strName & “!”

  19. MsgBox met andere knoppen Default heeft een MsgBox alleen een OK knop (vbOKOnly), maar zijn meer mogelijkheden: MsgBox(Prompt, Icon + Buttons, Titel) door drukken van een button krijg je een resultaat! Sub ShowMesBox(StrName) If MsgBox("Ben jij " & StrName & "?", vbYesNo + _ vbQuestion, "Naamcontrole") = vbYes Then MsgBox "OK" End If End Sub + vbQuestion, vb Exclamation icoon + vbYesNO, vbRetryCancel knoppen

  20. Inputbox InputBox Messagestring: een functie met een resultaat! Sub testInputBox() Dim strResponse As String, strMsg As String strMsg = “Tik hier je naam” strResponse = Inputbox(strMsg) If strResponse <> “” Then MsgBox “Goedemorgen “ & strResponse & “!” End If End Sub

  21. Inputbox 2 Meer mogelijkheden met InputBox: InputBox(prompt, title, default) InputBox(“Hoe heet je?”, Naam, strDefaultnaam) strDefaultnaam: bijvoorbeeld degene die het laatst het programma gebruikt heeft

  22. For .... Next For range-of-values-of-var statements Next value-of-var Voorbeeld: Dim intTeller As Integer For intTeller = 1 To 10 Debug.Print intTeller Next intTeller en nu de tafels?

  23. For .... Next toepassing Sub PrintTafels() Dim intTeller1 As Integer Dim intTeller2 As Integer For intTeller1 = 1 To 10 Debug.Print "Tafel van " & intTeller1 For intTeller2 = 1 To 10 Debug.Print intTeller2 & " x " & intTeller1 & " = " & intTeller2 * intTeller1 Next intTeller2 Next intTeller1 End Sub

  24. For .... Next/ For Each For range-of-values-of-var statements Next value-of-var Dim intArray(1 To 10) As Integer Dim i As Integer Dim varIdx As Variant For i = 1 to 10 intArray(i) = i Next i For Each varIdx In intArray Debug.Print 2 * varIdx Next varIdx verplicht type voor For Each!

More Related