VBA voor Doe Het Zelvers deel 2

Vergelijkbare documenten
VBA voor Doe het Zelvers deel 5

VBA voor doe-het-zelvers

VBA voor Doe het Zelvers deel 12

VBA voor doe het zelvers (4)

VBA voor doe het Zelvers - deel 10

VBA voor Doe het Zelvers deel 9

VBA voor Doe het Zelvers deel 14

Hoofdstuk 19: Macro s

EXCEL MACRO ZET TEKST IN GESELECTEERDE CELLEN OM NAAR KLEINE LETTERS

25 Excel tips. 25 Handige Excel tips die tijd besparen en fouten voorkomen. Ir. Fred Hirdes. Excel-leren.nl.

VBA voor Doe het Zelvers deel 16

Minder bekende functies in Excel

Hoofdstuk 23: Eenvoudig taken automatiseren met macro s

VBA voor Doe het Zelvers deel 19

Excel. Inleiding. Het meest gebruikte spreadsheet programma is Excel.

Basisvaardigheden Microsoft Excel

EXCEL MACRO ZET TEKST IN GESELECTEERDE CELLEN OM: NAAR KLEINE LETTERS NAAR KLEINE LETTERS MET BEGINHOOFDLETTER NAAR HOOFDLETTERS

Basisvaardigheden Microsoft Excel

Hoofdstuk 26: Modelleren in Excel

Briefhoofd maken in Word. Handleiding van Helpmij.nl

9.19 Macro s: oefeningen

9.18 Macro s: oefeningen

Hoofdstuk 13: Sorteren & Filteren* 2010

Inhoud. VBA Excel 2010

Sneltoetsen Excel 2010

Van macrorecorder door naar VBA

HOOFDSTUK 1. beginnen met excel

Vergelijkingseditor 2007

Het uiterlijk lijkt erg op Word, een paar belangrijke verschillen geven we aan in de schermafdruk hieronder.

SNELLE INVOER MET EXCEL

Automatisch handelingen uitvoeren

Maak van je tabel een database. Handleiding van Helpmij.nl

Basistechnieken Microsoft Excel in 15 minuten

VBA voor Doe het Zelvers Deel 13

INHOUD. Ten geleide Excel Basis 15

Excel: jaarkalender maken, bevat voorw. opmaak opties

Hoofdstuk 10: Groeperen* 2010

Excel Controller. Handleiding Excel Controller Wizard

INHOUDSOPGAVE. Inhoudsopgave

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF Reken om naar EURO---

Hoofdstuk 1: Het Excel Dashboard* 2010

6. Reeksen

Excel 2013: Snelle analyse

Hoofdstuk 32: Pagina- & afdrukinstellingen

VAARDIGHEDEN EXCEL. MEETWAARDEN INVULLEN In de figuur hieronder zie je twee keer de ingevoerde meetwaarden, eerst ruw en daarna netjes opgemaakt.

Hoofdstuk 2: Basis navigeren & bewerken

VBA voor Doe het Zelvers deel 20

Handleiding Vedor-editor

Excel reader. Beginner Gemiddeld.

Computerlessen voor Senioren. Themacursus. Basis Excel. Uitgave Samenstelling: Lucien Delchambre Paul Derycke. Werken met mappen 1

10. Voorbeeld berekeningen maken met Excel

Veelgestelde vragen over AdminView

Hoofdstuk 20: Wiskundige functies

Een macro met een knop opstarten.

Een tabel is samengesteld uit rijen (horizontaal) en kolommen (verticaal). Elk vakje uit een tabel is een cel.

ADRES 2000 VOOR WINDOWS

Makkelijk Publiceren

Een grafiek maken in Excel

R E L A T I E B E H E E R. Copyright Beuvink Advies en Service

Access voor beginners - hoofdstuk 25

STB-TOOL GEBRUIKER SEED ARCHITECTS AUT.SEED AUTOMATISERING AB.ER.MAN HANDLEIDING STB-TOOL JULY 1, 2017

Een functie is een kant en klare formule. Via de knop Som in de groep Bewerken van het tabblad Start kun je een aantal veelgebruikte functies kiezen:

DATABASEBEHEER IN EXCEL

Tips en Tricks basis. Microsoft CRM Revisie: versie 1.0

Een toekomst voor ieder kind.

Hoofdstuk 8: Bewerken

Inhoudsopgave Voorwoord 5 Nieuwsbrief 5 Introductie Visual Steps 6 Wat heeft u nodig? 6 De volgorde van lezen 7 Uw voorkennis

Programmeren in Excel VBA. Karel Nijs 2010/09

Cursus Excel voor beginners (6) Functies.

Een eerste applicatie

Grote hoeveelheid gegevens analyseren: draaitabellen

Handleiding voor Excel to Image

Hoofdstuk 21: Gegevens samenvatten

5. Functies. In deze module leert u:

Wiskunde en ICT 1. Met het lettertype wiskunde.ttf kan je onderstaande wiskundige symbolen invoegen.

HANDLEIDING Q1600 Fashion

Handleiding teksteditor

1. Cellen en formules

Programmeren in Excel 2016 met VBA

Excel afdrukken Afdrukken in Excel. Afdrukbereik, afbeeldingen, kantlijnen e.d.

Macro s. 4.2 Een macro maken

Overzichten genereren in het FMIS

INSTRUCT Samenvatting Praktijk Access 2010, H2 SAMENVATTING HOOFDSTUK 2

Informatica Software PO: Excel

Handleiding registratiesysteem Kleuterplein. versie 1.0

Hoofdstuk 16: Grafieken en diagrammen: hoe

Handicom. Symbol for Windows. Image Manager. (Versie 4) Handicom, 2011, Nederland

Werken aan de hand van. Microsoft Excel. Schooljaar V. Schelkens, C. Kaivers, F. Thomas

II. ZELFGEDEFINIEERDE FUNCTIES


1. Introductie tot SPSS

TOOL MJOB HANDLEIDING

1.7 Koppelen aan externe data: aan een Access-database

Tabellen. Een tabel invoegen

SNELTOETS CTRL+1 Celeigenschappen

1. Cellen en formules

Handleiding TWYSK Risicotool. Online webapplicatie voor het vastleggen en beheren van risico-informatie

1 DATABASE MANAGEMENT

Transcriptie:

VBA voor Doe Het Zelvers deel 2 Handleiding van Auteur: Leofact Januari 2014

handleiding: VBA voor Doe Het Zelvers deel 2 VBA voor Doe Het Zelvers deel 2 VBA voor Doe Het Zelvers is een reeks artikelen, bedoelt voor mensen die met VBA in Excel aan de slag willen om taken te automatiseren, of om deze toegankelijk te maken voor gebruikers met weinig Excel kennis. VBA is een volwaardige programmeertaal, met een woordenschat en een zinsopbouw (syntaxis). Om deze goed te leren wordt aangeraden om hierover boeken te lezen. Bijvoorbeeld uit deze willekeurige selectie. Vorige aflevering In de eerste aflevering werd uitgelegd wat een macro is en hoe Excel ingesteld moet worden om met macro s te werken. Ook is uitgelegd hoe je met de Macro recorder een macro kunt opnemen en op welke manier deze macro vervolgens zichtbaar wordt in de VBA editor. In deze aflevering In deze aflevering wordt de opgenomen code onder de loep genomen. Uitgelegd wordt wat een Procedure is en wat een Function is. In vogelvlucht wordt de opbouw van VBA, als Object Model, uitgelegd met een korte uitleg van de begrippen Methodes en Eigenschappen. Ook wordt besproken hoe en waar code kan worden ingevoerd met uitleg van de auto aanvulling: IntelliSense. De code wordt tot de essentie teruggebracht en er wordt stil gestaan bij het aanpassen van de code. Als laatste wordt behandeld dat een Procedure kan worden gestart met behulp van sneltoetsen of met een zelfgemaakte knop. De code De macro die in de vorige aflevering werd opgenomen, was een rij namen (A2:A8) selecteren en deze vervolgens sorteren. Na opname werd in de Macro editor (te openen met ALT + F11) de volgende code zichtbaar: Sub Macro1() ' Macro1 Macro ' Range("A2:A8").Select ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear _ ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add _ Key:=Range("A2:A8"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Blad1").Sort.SetRange Range("A2:A8").Header = xlguess.matchcase = False.Orientation = xltoptobottom.sortmethod = xlpinyin.apply End With Als eerste valt op dat de simpele handeling, namelijk het selecteren en sorteren, flink wat regels tekst blijkt op te leveren. Even schrikken misschien, maar het is minder ingewikkeld dan het op het eerste gezicht lijkt. De oorzaak hiervan kan gevonden worden in de manier waarop de macrorecorder de code genereert op basis van de handelingen die opgenomen zijn. De recorder weet niet wat er exact bedoelt wordt en genereert daarom de code heel uitgebreid. Pagina 1/6

handleiding: VBA voor Doe Het Zelvers deel 2 Procedures, Functies en het Project Nu eerst even wat algemene VBA kennis. De code die je ziet is een Procedure of Subroutine. Deze begint altijd met Sub naam en haakjes openen en sluiten. Om ervoor te zorgen dat er geen verwarring kan ontstaan, dient de naam altijd uniek te zijn en dus nooit een term die door Excel gebruikt wordt. Een procedure eindigt altijd met. Zo weet Excel dat het klaar is met de procedure. Een procedure is een serie handelingen die bepaalde taken uitvoert. Daarnaast is er ook de Function. Schrijfwijze (Syntax): Function Naam1() End Function De Function kun je vergelijken met een Functie, zoals deze in Excel zelf wordt gebruikt. Een ingevoerd gegeven wordt omgerekend naar een uitkomst. Deze uitkomst wordt vervolgens ergens anders in het programma weer gebruikt. Procedures en Functions, die qua werking bij elkaar horen, worden in een Module opgenomen. Er kunnen meerdere Modules zijn. Het geheel van dit alles vormt het Project. Grammatica of Syntaxis Bij het ontwerpen van VBA had Microsoft een gebruiker in het achterhoofd die niet specifiek een programmeur hoefde te zijn. De taal is daarom behoorlijk vergevingsgezind. Er zijn vele wegen mogelijk die naar hetzelfde resultaat leiden. Dat is prettig. Tegelijkertijd vormt het ook een valkuil. Het is belangrijk dat je er zorg voor draagt dat je je eigen code goed begrijpt. Ook als je na een paar jaar een Project nog eens onder handen zou moeten nemen. Gebruik daarom steeds namen die voor jou logisch zijn. Hetzelfde geldt voor de opbouw van de code. Dit is soms in strijd met een andere eis: namelijk om de code zo kort mogelijk te houden. Hoe korter de code hoe sneller Excel de opdrachten kan uitvoeren. Het lijkt me voor de hand liggend, dat je weinig opschiet met snelle code waar je zelf geen weg meer in kan vinden. Excel helpt gelukkig ook nu, want het kan best veel tekst aan voordat er vertraging bij het omzetten (compileren) merkbaar is. Nog meer taal; over Objecten, Methodes en Eigenschappen. VBA heeft een duidelijke, gestructureerde opbouw. Er is sprake van een Object Model. De vier belangrijkste Objecten zijn: - Application - Workbook - Worksheet - Range Deze objecten kennen we al van Excel zelf. De Objecten hebben leden, die specifiek bij dat Object horen. Leden kunnen ook weer Objecten zijn, maar ook Methodes en Eigenschappen. Methodes voeren iets uit en bij Eigenschappen gaat het om een instelling. Deze kunnen altijd worden uitgelezen en soms worden ingesteld. Bij het gebruikte code voorbeeld is Sort een methode van het Object Pagina 2/6

handleiding: VBA voor Doe Het Zelvers deel 2 ActiveWorkbook.Worksheets("Blad1") Eén van de eigenschappen van Sort is Orientation, met als waarde (Constante) xltoptobottom. Apply is een Methode, die op Sort wordt uitgevoerd. Taaie kost. Gelukkig helpt IntelliSense ook hier. Wanneer een punt achter een Object gezet wordt, geeft IntelliSense de mogelijke leden weer. Wanneer daar achteraan een spatie wordt ingegeven worden de leden en Constanten weergegeven (zie voorbeeld hieronder) Afspraken Een andere manier om de Objecten in een overzicht te zien is via het Objecten venster (druk F2 in de VBA editor). Na selectie van een Object zie je goed welke leden bij dit Object horen. Hier is ook goed de hiërarchie te zien. Sort kan lid zijn van Range of van Worksheet. Sort heeft zelf ook weer een aantal leden. Objecten en leden zijn onderdeel van een bibliotheek. In dit geval de Excel bibliotheek. Er zijn meerdere bibliotheken, bijvoorbeeld voor VBA, voor Word etc. Om een procedure of een Function overzichtelijk te houden is er een aantal afspraken: Een opdracht staat in principe steeds op één regel. Wanneer deze zo lang zou worden dat de code onoverzichtelijk wordt, kan de regel worden afgebroken. Hiervoor wordt het liggende streepje gebruikt na een spatie (zie de voorbeeld code). Met de apostrof ( ) wordt aangegeven dat de daarop volgende tekst een opmerking is. Excel voert dat niet uit als code. Dit biedt de mogelijkheid om commentaar aan de eigen code toe te voegen, zodat deze duidelijker leesbaar wordt. Commentaar tekst wordt automatisch groen. Excel probeert steeds de code die wordt ingevoerd te herkennen. Als dat lukt, vult Excel de tekst aan of geeft de keuze uit bepaalde mogelijkheden (waarden). Bepaalde stappen in de code worden blauw gekleurd en foutieve invoer wordt automatisch rood. Deze functie van intellisense maakt het leven van een (aankomend) programmeur een stuk aangenamer. Pagina 3/6

handleiding: VBA voor Doe Het Zelvers deel 2 Terug naar de code. Wanneer je nauwkeurig naar de eerder opgenomen code kijkt en wat Engels kent, herken je vast het één en ander. Range("A2:A8").Select De cellen A2 tot en met A8 werden geselecteerd, dus dat zal Select heten. Range is het geselecteerde bereik. ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add _ Key:=Range("A2:A8"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal Dit wordt iets moeilijker: Sort is natuurlijk sorteren. De sorteervelden van het werkblad blad1, wat onderdeel is van het actieve (geopende) werkboek, worden gereset. Vervolgens wordt er een sorteer veld toegevoegd en we herkennen onze range weer als sleutel. Er gaat op waardes gesorteerd worden en de volgorde zal opklimmend zijn. With ActiveWorkbook.Worksheets("Blad1").Sort.SetRange Range("A2:A8").Header = xlgues.matchcase = False.Orientation = xltoptobottom.sortmethod = xlpinyin.apply End With With geeft aan dat er een blok komt, dat bij het genoemde object hoort. In dit geval dus: ActiveWorkbook.Worksheets("Blad1"). Met een voorafgaande punt wordt aangegeven, dat dit bij het genoemde object hoort..setrange Range("A2:A8"); stelt het ons inmiddels bekende bereik in..header = xlguess; Excel zal raden of er een kolomkop boven de kolom staat..matchcase = False; Excel maakt bij het sorteren geen onderscheidt tussen hoofd- en kleine letters..orientation = xltoptobottom; er wordt van boven naar beneden gesorteerd..sortmethod = xlpinyin; Chinese karakters worden fonetisch gesorteerd..apply; pas dit alles toe (er wordt eindelijk gesorteerd.) End With; stopt het blok dat bij ActiveWorkbook.Worksheets("Blad1").Sort hoort. Moet je dit alles echt uit je hoofd weten? Nee, gelukkig niet. Type het begrip in het Help vak rechtsboven in de VBA editor en je krijgt de benodigde uitleg te zien. Zo kwam ik ook achter de betekenis van XlPinYin. Want eerlijk; ik had geen idee. Is dit alles nu nodig om te sorteren? Nee absoluut niet. De volgende Procedure doet precies hetzelfde: Sub Sorteren() Blad1.Range("A2:A8").Sort Range("A2") Hier wordt het bekende bereik op de bovenste waarde uit de kolom gesorteerd. Verder wordt alles aan de standaard sorteerinstellingen van Excel over gelaten. Nu is goed te zien, hoe één en ander naar wens is aan te passen. Sub Sorteren() Blad1.Range("A2:C8").Sort Range("B2") In deze code worden drie opeenvolgende kolommen gesorteerd. De volgorde wordt bepaald door de gegevens van de middelste kolom. Interessant wordt het als je de Range dynamisch kan aanpassen. Daarvoor kun je variabelen gebruiken. Pagina 4/6

handleiding: VBA voor Doe Het Zelvers deel 2 Hierover meer in de volgende aflevering. Procedure gebruiken. De simpele procedure is nu klaar. Hoe ga je die nu gebruiken? In de VBA editor kun je op F5 drukken wanneer de cursor ergens in de macro staat. Dat is niet echt handig als je in Excel aan het werk bent. En nog minder handig als iemand anders jouw macro moet starten. Vanuit Excel zelf kan de macro gestart worden in het venster macro s (ALT + F8). Dubbelklik op de macro (1) of klik op uitvoeren (2) en ja hoor, de kolom wordt gesorteerd. Dat is nog niet echt gebruiksvriendelijk. Het gaat al gemakkelijker door een sneltoetscombinatie aan de macro toe te wijzen. Druk daarvoor opties (3). Toets vervolgens de gewenste combinatie. Bijvoorbeeld CTRL + SHFT + S. Er kan hier alleen voor Annuleren worden gekozen. De toetscombinatie wordt echter wel opgeslagen. De macro is nu te starten door in het geopende werkblad op de toetscombinatie te drukken. Handig, maar je moet wel de combinatie onthouden. Om de te starten macro zichtbaar te maken kun je een knop gebruiken. Ga hiervoor naar de ontwikkelaars tab en klik op Ontwerp modus. Klik vervolgens op invoegen en selecteer de knop. Neem wel de knop van de ActiveX objecten. Deze zijn uitgebreider aan te passen. De cursor verandert in een draadkruis en hiermee kun je op de gewenste plek in het werkblad de knop "tekenen". Klik rechts op de knop en selecteer Eigenschappen. Pas de volgende eigenschappen aan: Name, wordt CbutSort (1) (of een voor jou duidelijke naam). Caption (de tekst op de knop) wordt Sorteren (2). Om het af te maken zet je de Accelerator op S (3). De S op de knop wordt onderstreept en de knop is nu te activeren met de menu toetscombinatie ALT + s. Klik nu weer met rechts op de knop en kies Programmacode weergeven. Er wordt een macro zichtbaar die reageert op een klik op de knop. Dit is een Event, of gebeurtenis macro. Zet daar de eigen code tussen, zoals hieronder. Voortaan zal de code worden uitgevoerd na een druk op de knop. Private Sub CbutSort_Click() 'sorteer macro Blad1.Range("A2:C8").Sort Range("B2") Tip: Vergeet niet om de ontwerpmodus uit te zetten. Anders gebeurt er niets. Een andere mogelijkheid is om de knop een afbeelding weer te laten geven. Maak daarvoor een geschikte afbeelding. Klik naast Picture (4) en vervolgens op het knopje met de drie stippen. Selecteer dan je afbeelding in het bestandsvenster. De knop kan er dan zo uit zien: Tip: Macro s starten niet als Excel in tekstinvoer modus staat (herkenbaar aan de knipperende tekst cursor in een cel) Pagina 5/6

handleiding: VBA voor Doe Het Zelvers deel 2 Dit was het voor deze aflevering. De volgende keer gaan we verder met aanpassingsmogelijkheden in de Procedure. Daarvoor worden o.a. de begrippen Range en Variabele behandeld. Pagina 6/6