Welcome to Our Website

Aan de slag met VBA in Office

  • 08/14/2019
  • 25 minuten te lezen
    • o
    • R
    • L
    • m
    • O
    • +4

Bent u geconfronteerd met een zich herhalend opruimen van vijftig tabellen in Word? Wilt u dat een bepaald document de gebruiker om invoer vraagt wanneer het wordt geopend?, Heeft u moeite met het uitzoeken hoe u uw contacten van Microsoft Outlook efficiënt in een Microsoft Excel-spreadsheet kunt krijgen?

u kunt deze taken uitvoeren en nog veel meer bereiken door Visual Basic for Applications (VBA) voor Office te gebruiken—een eenvoudige, maar krachtige programmeertaal die u kunt gebruiken om Office-toepassingen uit te breiden.

Dit artikel is voor ervaren Office-gebruikers die meer willen weten over VBA en die inzicht willen in hoe programmeren hen kan helpen om Office aan te passen.

het kantoorpakket van toepassingen heeft een rijke reeks functies., Er zijn veel verschillende manieren om documenten, e-mail, databases, formulieren, spreadsheets en presentaties te maken, te formatteren en te manipuleren. De grote kracht van VBA-programmering in Office is dat bijna elke operatie die u kunt uitvoeren met een muis, toetsenbord of een dialoogvenster ook kan worden gedaan met behulp van VBA. Verder, als het eenmaal met VBA kan worden gedaan, kan het net zo gemakkelijk honderd keer worden gedaan. (In feite, de automatisering van repetitieve taken is een van de meest voorkomende toepassingen van VBA in Office.,)

naast de kracht van het scrippen van VBA om dagelijkse taken te versnellen, kunt u VBA gebruiken om nieuwe functionaliteit toe te voegen aan Office-toepassingen of om de gebruiker van uw documenten te vragen en te communiceren op manieren die specifiek zijn voor uw zakelijke behoeften. U kunt bijvoorbeeld een VBA-code schrijven die een pop-upbericht weergeeft dat gebruikers eraan herinnert een document op te slaan op een bepaald netwerkstation de eerste keer dat ze het proberen op te slaan.

Dit artikel verkent enkele van de belangrijkste redenen om de kracht van VBA-programmering te benutten., Het onderzoekt de VBA-taal en de out-of-the-box tools die u kunt gebruiken om te werken met uw oplossingen. Tot slot bevat het een aantal tips en manieren om een aantal gemeenschappelijke programmering frustraties en misstappen te voorkomen.

Note

geïnteresseerd in het ontwikkelen van oplossingen die de kantoorervaring op meerdere platforms uitbreiden? Bekijk het nieuwe Office-invoegtoepassingen-model. Office-invoegtoepassingen hebben een kleine footprint in vergelijking met VSTO-invoegtoepassingen en-oplossingen, en u kunt ze bouwen met behulp van bijna elke webprogrammeertechnologie, zoals HTML5, JavaScript, CSS3 en XML.,

wanneer VBA te gebruiken en waarom

Er zijn verschillende belangrijke redenen om VBA-programmering in Office te overwegen.

automatisering en herhaling

VBA is effectief en efficiënt als het gaat om repetitieve oplossingen voor opmaak-of correctieproblemen. Hebt u bijvoorbeeld ooit de stijl van de alinea bovenaan elke pagina in Word gewijzigd? Heb je ooit meerdere tabellen moeten formatteren die vanuit Excel zijn geplakt in een Word-document of een Outlook-e-mail? Heb je ooit dezelfde verandering in meerdere Outlook-contactpersonen moeten maken?,

als je een wijziging hebt die je meer dan tien of twintig keer moet maken, kan het de moeite waard zijn deze te automatiseren met VBA. Als het een verandering is die je honderden keren moet doen, is het zeker de moeite waard om te overwegen. Bijna elke opmaak – of bewerkingswijziging die u met de hand kunt doen, kan in VBA worden gedaan.

uitbreidingen van gebruikersinteractie

Er zijn momenten waarop u gebruikers wilt aanmoedigen of dwingen om met de Office-toepassing of het document te communiceren op een bepaalde manier die geen deel uitmaakt van de standaardtoepassing., U kunt gebruikers bijvoorbeeld vragen een bepaalde actie te ondernemen wanneer ze een document openen, opslaan of afdrukken.

interactie tussen Office-toepassingen

moet u al uw contacten van Outlook naar Word kopiëren en ze vervolgens op een bepaalde manier formatteren? Of moet u gegevens van Excel naar een set PowerPoint-dia ‘ s verplaatsen? Soms doet eenvoudig kopiëren en plakken niet wat je wilt, of is het te traag., U kunt VBA-programmering gebruiken om tegelijkertijd met de details van twee of meer Office-toepassingen te communiceren en vervolgens de inhoud in de ene toepassing te wijzigen op basis van de inhoud in een andere.

dingen op een andere manier doen

VBA programmeren is een krachtige oplossing, maar het is niet altijd de optimale aanpak. Soms is het zinvol om andere manieren te gebruiken om uw doelen te bereiken.

de cruciale vraag is of er een gemakkelijkere manier is. Voordat u een VBA-project begint, overweeg dan de ingebouwde tools en standaardfunctionaliteiten., Als u bijvoorbeeld een tijdrovende bewerkings-of opmaaktaak hebt, kunt u overwegen stijlen of sneltoetsen te gebruiken om het probleem op te lossen. Kunt u de taak één keer uitvoeren en vervolgens CTRL + Y (Redo) gebruiken om deze te herhalen? Kunt u een nieuw document maken met de juiste indeling of sjabloon en vervolgens de inhoud naar dat nieuwe document kopiëren?

Office-toepassingen zijn krachtig; de oplossing die u nodig hebt kan er al zijn. Neem de tijd om meer te weten te komen over Office voordat je begint met programmeren.

voordat u een VBA-project begint, moet u ervoor zorgen dat u de tijd hebt om met VBA te werken., Programmeren vereist focus en kan onvoorspelbaar zijn. Vooral als een beginner, nooit wenden tot programmeren, tenzij je tijd om zorgvuldig te werken. Proberen om een “quick script” te schrijven om een probleem op te lossen wanneer een deadline opdoemt kan resulteren in een zeer stressvolle situatie. Als u gehaast bent, wilt u misschien conventionele methoden gebruiken, zelfs als ze eentonig en repetitief zijn.

VBA Programming 101

code gebruiken om toepassingen dingen te laten doen

je zou kunnen denken dat het schrijven van code mysterieus of moeilijk is, maar de basisprincipes gebruiken dagelijks redeneren en zijn vrij toegankelijk., Microsoft Office-applicaties zijn zo gemaakt dat ze dingen blootstellen die objecten worden genoemd die instructies kunnen ontvangen, op dezelfde manier als een telefoon is ontworpen met knoppen die u gebruikt om te communiceren met de telefoon. Wanneer u op een knop drukt, herkent de telefoon de instructie en bevat het bijbehorende nummer in de volgorde die u kiest. Bij het programmeren communiceer je met de applicatie door instructies te sturen naar verschillende objecten in de applicatie. Deze objecten zijn expansief, maar ze hebben hun grenzen., Ze kunnen alleen doen waarvoor ze ontworpen zijn, en ze zullen alleen doen wat jij hen instrueert te doen.

denk bijvoorbeeld aan de gebruiker die een document in Word opent, enkele wijzigingen aanbrengt, het document opslaat en het vervolgens sluit. In de wereld van VBA-programmering, Word bloot een document object. Door VBA-code te gebruiken, kunt u het documentobject opdracht geven dingen te doen zoals Openen, Opslaan of sluiten.

in de volgende paragraaf wordt besproken hoe objecten worden georganiseerd en beschreven.,

het objectmodel

ontwikkelaars organiseren programmeerobjecten in een hiërarchie, en die hiërarchie wordt het objectmodel van de toepassing genoemd. Word heeft bijvoorbeeld een toepassingsobject op het hoogste niveau dat een documentobject bevat. Het documentobject bevat Alineaobjecten enzovoort. Objectmodellen spiegelen ruwweg wat je ziet in de gebruikersinterface. Ze zijn een conceptuele kaart van de toepassing en de mogelijkheden ervan.

de definitie van een object wordt een klasse genoemd, dus u kunt deze twee termen door elkaar zien worden gebruikt., Technisch gezien is een klasse de beschrijving of sjabloon die wordt gebruikt om een object te maken of te instantiëren.

zodra een object bestaat, kunt u het manipuleren door zijn eigenschappen in te stellen en zijn methoden aan te roepen. Als je aan het object denkt als een zelfstandig naamwoord, zijn de eigenschappen de bijvoeglijke naamwoorden die het zelfstandig naamwoord beschrijven en de methoden zijn de werkwoorden die het zelfstandig naamwoord animeren. Het veranderen van een eigenschap verandert een bepaalde kwaliteit van het uiterlijk of gedrag van het object. Het aanroepen van een van de objectmethoden zorgt ervoor dat het object een bepaalde actie uitvoert.,

de VBA-code in dit artikel werkt tegen een Open Office-toepassing waar veel van de objecten die de code manipuleert al actief zijn; bijvoorbeeld de toepassing zelf, het werkblad in Excel, het Document in Word, de presentatie in PowerPoint, de Explorer-en Mapobjecten in Outlook. Zodra u de basisopmaak van het objectmodel en enkele belangrijke eigenschappen van de toepassing kent die toegang geven tot de huidige toestand, kunt u beginnen met het uitbreiden en manipuleren van die Office-toepassing met VBA in Office.,

Methods

in Word kunt u bijvoorbeeld de eigenschappen wijzigen en de methoden van het huidige Word-document aanroepen met behulp van de ActiveDocument-eigenschap van het toepassingsobject. Deze eigenschap ActiveDocument geeft een verwijzing terug naar het documentobject dat momenteel actief is in de Word-toepassing. “Geeft een verwijzing naar “means” geeft u toegang tot.”

de volgende code doet precies wat het zegt; dat wil zeggen, het slaat het actieve document op in de toepassing.,

Application.ActiveDocument.Save

Lees de code van links naar rechts, ” in deze toepassing, met het Document waarnaar wordt verwezen door ActiveDocument, de Save methode aanroepen.”Wees ervan bewust dat Opslaan is de eenvoudigste vorm van methode; het vereist geen gedetailleerde instructies van u. U instrueert een documentobject om op te slaan en het vereist geen invoer meer van u.

als een methode meer informatie vereist, worden deze details parameters genoemd. De volgende code draait de SaveAs methode, die een nieuwe naam voor het bestand vereist.,

Application.ActiveDocument.SaveAs ("New Document Name.docx")

waarden tussen haakjes na een methodenaam zijn de parameters. Hier is de nieuwe naam voor het bestand een parameter voor de SaveAs methode.

Properties

u gebruikt dezelfde syntaxis om een eigenschap in te stellen die u gebruikt om een eigenschap te lezen. De volgende code voert een methode uit om cel A1 in Excel te selecteren en vervolgens een eigenschap in te stellen om iets in die cel te plaatsen.

 Application.ActiveSheet.Range("A1").Select Application.Selection.Value = "Hello World"

de eerste uitdaging in VBA-programmering is om een gevoel te krijgen voor het objectmodel van elke Office-toepassing en om de syntaxis van object, methode en eigenschap te lezen., De objectmodellen zijn vergelijkbaar in alle Office-toepassingen, maar elk is specifiek voor het soort documenten en objecten dat het manipuleert.

In de eerste regel van het codefragment is er het toepassingsobject, Excel deze keer, en dan het ActiveSheet, dat toegang geeft tot het actieve werkblad. Daarna is een term niet zo vertrouwd, bereik, wat betekent ” definieer een bereik van cellen op deze manier.”De code instrueert bereik om zichzelf te maken met alleen A1 als de gedefinieerde set cellen. Met andere woorden, de eerste regel code definieert een object, het bereik, en voert een methode tegen om het te selecteren., Het resultaat wordt automatisch opgeslagen in een andere eigenschap van de toepassing genaamd selectie.

de tweede regel code stelt de waarde-eigenschap van selectie in op de tekst “Hello World”, en die waarde verschijnt in cel A1.

De eenvoudigste VBA-code die u schrijft, kan eenvoudig toegang krijgen tot objecten in de Office-toepassing waarmee u werkt en eigenschappen instellen. U kunt bijvoorbeeld toegang krijgen tot de rijen in een tabel in Word en de opmaak ervan in uw VBA-script wijzigen.,

dat klinkt eenvoudig, maar het kan ongelooflijk nuttig zijn; als je eenmaal die code kunt schrijven, kun je alle kracht van programmeren benutten om dezelfde wijzigingen aan te brengen in meerdere tabellen of documenten, of ze te maken volgens een logica of voorwaarde. Voor een computer is het maken van 1000 wijzigingen niet anders dan het maken van 10, dus er is hier een schaalvoordelen met grotere documenten en problemen, en dat is waar VBA echt kan schitteren en u tijd kan besparen.,

macro ‘ s en de Visual Basic Editor

Nu u iets weet over hoe Office-toepassingen hun objectmodellen blootleggen, wilt u waarschijnlijk proberen objectmethoden aan te roepen, objecteigenschappen in te stellen en te reageren op objectgebeurtenissen. Om dit te doen, moet je je code schrijven op een plaats en op een manier die Office kan begrijpen; meestal, door gebruik te maken van de Visual Basic Editor. Hoewel het standaard is geïnstalleerd, weten veel gebruikers niet dat het zelfs beschikbaar is totdat het is ingeschakeld op het lint.

alle Office-toepassingen gebruiken het lint., Een tabblad op het lint is het tabblad Ontwikkelaar, waar u toegang tot de Visual Basic Editor en andere ontwikkelaarstools. Omdat Office het tabblad Ontwikkelaar niet standaard weergeeft, moet u het als volgt inschakelen:

om het tabblad Ontwikkelaar

  1. op het tabblad bestand te activeren, kiest u opties om het dialoogvenster Opties te openen.

  2. kies Lint aanpassen aan de linkerkant van het dialoogvenster.

  3. onder Kies opdrachten van aan de linkerkant van het dialoogvenster, Selecteer populaire opdrachten.,

  4. Onder het lint aanpassen aan de rechterkant van het dialoogvenster, selecteert u Hoofdtabs in de vervolgkeuzelijst en schakelt u vervolgens het selectievakje ontwikkelaar in.

  5. kies OK.

Note

In Office 2007 werd het tabblad Ontwikkelaar weergegeven door de knop Office te kiezen, opties te kiezen en vervolgens het selectievakje Ontwikkelaar In lint tonen te selecteren in de populaire categorie van het dialoogvenster Opties.

nadat u het tabblad Ontwikkelaar hebt ingeschakeld, kunt u eenvoudig de knoppen Visual Basic en macro ‘ s vinden.

figuur 1., Knoppen op het tabblad Ontwikkelaar

beveiligingsproblemen

om Office-gebruikers te beschermen tegen virussen en gevaarlijke macrocode, kunt u macrocode niet opslaan in een standaard Office-document dat een standaard bestandsextensie gebruikt. In plaats daarvan moet u de code opslaan in een bestand met een speciale extensie. U kunt bijvoorbeeld geen macro ‘ s opslaan in een standaard Word-document met a .docx extensie; in plaats daarvan moet u een speciaal Word Macro-Enabled Document gebruiken met een .DOCM extensie.

wanneer u a opent .,docm-bestand, Office security kan nog steeds voorkomen dat de macro ‘ s in het document worden uitgevoerd, met of zonder het u te vertellen. Bekijk de Instellingen en opties in het Vertrouwenscentrum voor alle Office-toepassingen. De standaardinstelling schakelt macro uit, maar waarschuwt u dat macro ‘ s zijn uitgeschakeld en geeft u de mogelijkheid om ze weer in te schakelen voor dat document.

u kunt specifieke mappen aanwijzen waar macro ‘ s kunnen worden uitgevoerd door vertrouwde locaties, vertrouwde documenten of Vertrouwde uitgevers te maken., De meest draagbare optie is het gebruik van Vertrouwde uitgevers, die werkt met digitaal ondertekende documenten die u distribueert. Open het dialoogvenster Opties, kies Vertrouwenscentrum en kies vervolgens Instellingen van Vertrouwenscentrum voor meer informatie over de beveiligingsinstellingen in een bepaalde Office-toepassing.

Note

sommige Office-toepassingen, zoals Outlook, slaan macro ‘ s standaard op in een hoofdsjabloon op uw lokale computer., Hoewel die strategie de lokale beveiligingsproblemen op uw eigen computer vermindert wanneer u uw eigen macro ‘ s uitvoert, vereist het een implementatiestrategie als u uw macro wilt distribueren.

het opnemen van een macro

wanneer u de Macro-knop op het tabblad Ontwikkelaar kiest, wordt het dialoogvenster Macro ’s geopend, dat u toegang geeft tot VBA-subroutines of macro’ s die u vanuit een bepaald document of toepassing kunt openen. De Visual Basic knop opent de Visual Basic-Editor, waar u VBA-code maakt en bewerkt.,

een andere knop op het tabblad Ontwikkelaar In Word en Excel is de knop Macro opnemen, die automatisch VBA-code genereert die de acties kan reproduceren die u in de toepassing uitvoert. Record Macro is een geweldige tool die u kunt gebruiken om meer te leren over VBA. Het lezen van de gegenereerde code kan u inzicht geven in VBA en een stabiele brug bieden tussen uw kennis van Office als gebruiker en uw kennis als programmeur., Het enige voorbehoud is dat de gegenereerde code verwarrend kan zijn omdat de Macro-editor een aantal aannames moet maken over uw intenties, en die aannames zijn niet noodzakelijk accuraat.

om een macro

  1. op te nemen Open Excel naar een nieuwe werkmap en kies het tabblad ontwikkelaar in het lint. Kies Macro opnemen en accepteer alle standaardinstellingen in het dialoogvenster Macro opnemen, inclusief Macro1 als de naam van de macro en deze werkmap als de locatie.

  2. kies OK om te beginnen met het opnemen van de macro. Merk op hoe de knop tekst verandert om de opname te stoppen., Kies die knop op het moment dat u de acties die u wilt opnemen voltooien.

  3. kies cel B1 en typ de klassieke eerste tekenreeks van de programmeur: Hello World. Stop met typen en kijk naar de knop Stoppen met opnemen; Het is grijs omdat Excel erop wacht dat u klaar bent met het typen van de waarde in de cel.

  4. kies cel B2 om de actie in cel B1 te voltooien en kies vervolgens Opname stoppen.

  5. kies macro ‘ s op het tabblad Ontwikkelaar, selecteer Macro1 als deze niet is geselecteerd, en kies vervolgens Bewerken om de code van Macro1 te bekijken in de Visual Basic Editor.,

Figuur 2. Macrocode in Visual Basic Editor

kijkend naar de code

de macro die u hebt gemaakt moet er vergelijkbaar uitzien met de volgende code.

Sub Macro1()'' Macro1 Macro'' Range("B1").Select ActiveCell.FormulaR1C1 = "Hello World" Range("B2").SelectEnd Sub

wees bewust van de overeenkomsten met het eerdere codefragment dat tekst in cel A1 selecteerde, en de verschillen. In deze code wordt cel B1 geselecteerd en vervolgens wordt de string “Hello World” toegepast op de cel die actief is gemaakt. De aanhalingstekens rond de tekst specificeren een tekenreekswaarde in tegenstelling tot een numerieke waarde.,

weet u nog hoe u cel B2 hebt gekozen om de knop Opnemen stoppen weer te tonen? Die actie verschijnt ook als een regel code. De macro recorder registreert elke toetsaanslag.

de regels code die beginnen met een apostrof en groen gekleurd door de editor zijn commentaren die de code uitleggen of u en andere programmeurs herinneren aan het doel van de code. VBA negeert elke regel, of deel van een regel, die begint met een enkele aanhalingsteken. Het schrijven van duidelijke en passende opmerkingen in je code is een belangrijk onderwerp, maar die discussie valt buiten het bereik van dit artikel., Latere verwijzingen naar deze code in het artikel hebben geen betrekking op deze vier commentaarregels.

wanneer de macro-recorder de code genereert, gebruikt het een complex algoritme om de methoden en eigenschappen te bepalen die u bedoelde. Als u een bepaalde eigenschap niet herkent, zijn er veel middelen beschikbaar om u te helpen. Bijvoorbeeld, in de macro die u hebt opgenomen, de macro recorder gegenereerde code die verwijst naar de eigenschap FormulaR1C1. Weet je niet zeker wat dat betekent?

opmerking

wees ervan bewust dat toepassingsobject wordt geïmpliceerd in alle VBA-macro ‘ s., De code die u hebt opgenomen werkt met toepassing. aan het begin van elke regel.

met behulp van Ontwikkelaarshulp

Selecteer FormulaR1C1 in de opgenomen macro en druk op F1. Het Help-systeem voert een snelle zoekopdracht uit, bepaalt dat de juiste onderwerpen in de Excel Developer sectie van de Excel Help staan, en geeft de eigenschap FormulaR1C1 weer. U kunt de link kiezen om meer te lezen over de eigenschap, maar voordat u dat doet, moet u zich bewust zijn van de verwijzing naar het Excel-objectmodel onderaan het venster., Kies de link om een lange lijst met objecten weer te geven die Excel in zijn objectmodel gebruikt om de werkbladen en hun componenten te beschrijven.

Kies een van deze om de eigenschappen en methoden te zien die van toepassing zijn op dat specifieke object, samen met kruisverwijzingen naar verschillende gerelateerde opties. Veel help-items hebben ook korte code voorbeelden die u kunnen helpen. U kunt bijvoorbeeld de koppelingen in het object randen volgen om te zien hoe u een rand in VBA kunt instellen.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

het bewerken van de code

De Grenscode ziet er anders uit dan de opgenomen macro., Een ding dat verwarrend kan zijn met een objectmodel is dat er meer dan één manier is om een bepaald object aan te pakken, cel A1 in dit voorbeeld.

soms is de beste manier om te leren programmeren door kleine wijzigingen aan te brengen in een aantal werkende code en te zien wat er als gevolg daarvan gebeurt. Probeer het nu. Open Macro1 in de Visual Basic Editor en verander de code naar het volgende.

Sub Macro1() Worksheets(1).Range("A1").Value = "Wow!" Worksheets(1).Range("A1").Borders.LineStyle = xlDoubleEnd Sub

Tip

Gebruik zoveel mogelijk kopiëren en plakken bij het werken met code om typefouten te voorkomen.,

u hoeft de code niet op te slaan om het uit te proberen, dus keer terug naar het Excel-document, kies macro ‘ s op het tabblad Ontwikkelaar, kies Macro1 en kies vervolgens Uitvoeren. Cel A1 bevat nu de tekst Wow! en heeft een dubbele lijn rand eromheen.

Figuur 3. Resultaten van uw eerste macro

u combineerde alleen macro-opname, het lezen van de documentatie van het objectmodel en eenvoudig programmeren om een VBA-programma te maken dat iets doet. Gefeliciteerd!

werkte niet? Lees verder voor foutopsporingsuggesties in VBA.,

Programmeertips en-trucs

begin met voorbeelden

de VBA-gemeenschap is erg groot; een zoekopdracht op het Web kan bijna altijd een voorbeeld van VBA-code opleveren die iets doet dat lijkt op wat je wilt doen. Als u geen goed voorbeeld kunt vinden, probeer dan de taak op te splitsen in kleinere eenheden en zoek op elk van deze eenheden, of probeer een meer algemeen, maar vergelijkbaar probleem te bedenken. Beginnen met een voorbeeld kan u uren tijd besparen.

dat betekent niet dat er vrije en goed doordachte code op het Web staat te wachten tot u langskomt., In feite, sommige van de code die je vindt kunnen bugs of fouten hebben. Het idee is dat de voorbeelden die u online of in VBA-documentatie vindt u een voorsprong geven. Vergeet niet dat leren programmeren tijd en gedachte vereist. Voordat je in een grote haast om een andere oplossing te gebruiken om uw probleem op te lossen, vraag jezelf af of VBA is de juiste keuze voor dit probleem.

Maak een eenvoudiger probleem

programmering kan snel complex worden. Het is van cruciaal belang, vooral als beginner, dat je het probleem op te splitsen tot de kleinst mogelijke logische eenheden, dan schrijven en testen elk stuk in isolatie., Als je te veel code voor je hebt en je raakt verward of verward, stop en zet het probleem opzij. Als je terugkomt op het probleem, kopieer dan een klein stukje van het probleem naar een nieuwe module, los dat stuk op, zorg dat de code werkt, en test het om ervoor te zorgen dat het werkt. Ga dan naar het volgende deel.

Bugs en foutopsporing

Er zijn twee belangrijke typen programmeerfouten: syntaxisfouten, die de grammaticale regels van de programmeertaal schenden, en runtime-fouten, die er syntactisch correct uitzien, maar falen wanneer VBA probeert de code uit te voeren.,

hoewel ze frustrerend kunnen zijn om op te lossen, zijn syntaxfouten gemakkelijk te vangen; de Visual Basic Editor piept en knippert naar je als je een syntaxfout in je code typt.

bijvoorbeeld, tekenreekswaarden moeten worden omgeven door dubbele aanhalingstekens in VBA. Om erachter te komen wat er gebeurt als je in plaats daarvan enkele aanhalingstekens gebruikt, ga terug naar de Visual Basic Editor en vervang de ” Wow!”tekenreeks in het code voorbeeld met’ Wow!'(dat wil zeggen, het woord Wow ingesloten in enkele aanhalingstekens). Als u de volgende regel kiest, reageert de Visual Basic Editor., De fout “Compile error: Expected: expression” is niet zo behulpzaam, maar de regel die de fout genereert wordt rood om u te vertellen dat u een syntaxfout in die regel hebt en als gevolg daarvan zal dit programma niet draaien.

kies OK en verander de tekst terug naar ” Wow!”.

Runtime fouten zijn moeilijker te vangen omdat de programmeersyntaxis er correct uitziet, maar de code faalt wanneer VBA het probeert uit te voeren.,

open bijvoorbeeld de Visual Basic Editor en verander de waarde eigenschapsnaam in ValueX in uw Macro, waarbij u bewust een runtime-fout introduceert omdat het Range-object geen eigenschap heeft die ValueX heet. Ga terug naar het Excel-document, open het dialoogvenster Macro ‘ s en voer Macro1 opnieuw uit. U zou een Visual Basic berichtvenster moeten zien dat de runtime-fout met de tekst uitlegt, ” Object ondersteunt deze eigenschap van methode niet.”Hoewel die tekst duidelijk is, kies Debug om meer te weten te komen.,

wanneer u terugkeert naar de Visual Basic-Editor, is het in een speciale debug-modus die een gele markering gebruikt om u de regel code te tonen die is mislukt. Zoals verwacht wordt de regel met de ValueX-eigenschap gemarkeerd.

u kunt wijzigingen aanbrengen in de VBA-code die wordt uitgevoerd, dus verander ValueX terug naar Value en kies de kleine groene afspeelknop Onder het DebugMenu. Het programma moet weer normaal lopen.

het is een goed idee om de debugger doelbewust te gebruiken voor langere, complexere programma ‘ s., Op een minimum, Leer Een hoe breekpunten Instellen om de uitvoering te stoppen op een punt waar u wilt een kijkje nemen op de code, hoe u Horloges toe te voegen om de waarden van verschillende variabelen en eigenschappen te zien als de code loopt, en hoe u stap door de code regel voor regel. Deze opties zijn allemaal beschikbaar in het Debug menu en ernstige debugger gebruikers meestal onthouden de bijbehorende sneltoetsen.,

gebruik referentiematerialen goed

om de Ontwikkelaarreferentie te openen die is ingebouwd in Office Help, opent u de Help-referentie vanuit elke Office-toepassing door het vraagteken in het lint te kiezen of door op F1 te drukken. Dan, aan de rechterkant van de knop Zoeken, kies de dropdown pijl om de inhoud te filteren. Kies Developer Reference. Als u de inhoudsopgave niet ziet in het linkerpaneel, kiest u het kleine boekpictogram om het te openen en vouwt u de referentie van het objectmodel vanaf daar uit.

Figuur 5., Filteren op developer Help is van toepassing op alle Office-toepassingen

tijd besteed aan het bladeren door het Object Model referentie loont. Nadat u de basisprincipes van de VBA-syntaxis en het objectmodel voor de Office-toepassing waarmee u werkt begrijpt, gaat u van giswerk naar methodisch programmeren.

natuurlijk is het Microsoft Office Developer Center een uitstekend portaal voor artikelen, tips en community-informatie.,

forums en groepen zoeken

alle programmeurs komen soms vast te zitten, zelfs na het lezen van elk referentieartikel dat ze kunnen vinden en ‘ s nachts de slaap te verliezen door na te denken over verschillende manieren om een probleem op te lossen. Gelukkig heeft het Internet een gemeenschap van ontwikkelaars bevorderd die elkaar helpen programmeerproblemen op te lossen.

elke zoekopdracht op het Web naar” office developer forum ” onthult verschillende discussiegroepen. U kunt zoeken op “office development” of een beschrijving van uw probleem om forums te ontdekken, blog posts, en artikelen ook.,

als je alles hebt gedaan wat je kunt om een probleem op te lossen, wees dan niet bang om je vraag te plaatsen op een Ontwikkelaars forum. Deze forums verwelkomen berichten van nieuwere programmeurs en veel van de ervaren ontwikkelaars zijn blij om te helpen.

het volgende zijn een paar etiquette-punten die je moet volgen wanneer je post op een developer forum:

  • voordat je post, kijk op de site voor een FAQ of voor richtlijnen die leden willen dat je volgt. Zorg ervoor dat u inhoud plaatst die in overeenstemming is met deze richtlijnen en in de juiste sectie van het forum.,

  • voeg een duidelijke en volledige code sample, en overweeg het bewerken van uw code om het te verduidelijken voor anderen als het deel uitmaakt van een langere sectie van de code.

  • Beschrijf uw probleem duidelijk en bondig, en vat alle stappen samen die u hebt genomen om het probleem op te lossen. Neem de tijd om uw bericht zo goed als je kunt schrijven, vooral als je zenuwachtig of in een haast. Presenteer de situatie op een manier die zinvol is voor lezers de eerste keer dat ze de probleemverklaring lezen.

  • wees beleefd en spreek uw waardering uit.,

verder gaan met programmeren

hoewel dit artikel kort is en alleen het oppervlak van VBA en programmeren krast, is het hopelijk genoeg om je op weg te helpen.

in deze paragraaf worden nog enkele belangrijke onderwerpen besproken.

variabelen

in de eenvoudige voorbeelden in dit artikel hebt u objecten gemanipuleerd die de toepassing al had gemaakt. U kunt uw eigen objecten maken om waarden of verwijzingen naar andere objecten op te slaan voor tijdelijk gebruik in uw toepassing. Dit worden variabelen genoemd.,

om een variabele in VBA te gebruiken, moet VBA vertellen welk type object de variabele vertegenwoordigt door het Dim-statement te gebruiken. U stelt vervolgens de waarde in en gebruikt deze om andere variabelen of eigenschappen in te stellen.

 Dim MyStringVariable As String MyStringVariable = "Wow!" Worksheets(1).Range("A1").Value = MyStringVariable

vertakking en looping

De eenvoudige programma ‘ s in dit artikel voeren regel voor regel uit, van boven naar beneden. De echte kracht in programmeren komt van de opties die je hebt om te bepalen welke regels code Je moet uitvoeren, gebaseerd op een of meer voorwaarden die je opgeeft. U kunt deze mogelijkheden nog verder uitbreiden wanneer u een operatie vele malen kunt herhalen., De volgende code breidt bijvoorbeeld Macro1 uit.

Typ of plak de code in de Visual Basic Editor en voer het uit. Volg de aanwijzingen in het berichtvenster dat wordt weergegeven en wijzig de tekst in cel A1 van Wow! op Ja! en doe het nog eens om de kracht van looping te zien. Dit codefragment toont variabelen, vertakkingen en looping. Lees het zorgvuldig nadat je het in actie ziet en probeer te bepalen wat er gebeurt als elke regel wordt uitgevoerd.

Al mijn kantoortoepassingen: voorbeeld code

Hier zijn een paar scripts om te proberen; elk lost een echt Kantoorprobleem op.,

Maak een e-mail aan in Outlook

Sub MakeMessage() Dim OutlookMessage As Outlook.MailItem Set OutlookMessage = Application.CreateItem(olMailItem) OutlookMessage.Subject = "Hello World!" OutlookMessage.Display Set OutlookMessage = NothingEnd Sub

wees ervan bewust dat er situaties zijn waarin u e-mail wilt automatiseren in Outlook; u kunt ook sjablonen gebruiken.

Verwijder lege rijen in een Excel-werkblad

wees ervan bewust dat u een kolom met cellen kunt selecteren en deze macro kunt uitvoeren om alle rijen in de geselecteerde kolom met een lege cel te verwijderen.

Verwijder lege tekstvakken in PowerPoint

Sub RemoveEmptyTextBoxes() Dim SlideObj As Slide Dim ShapeObj As Shape Dim ShapeIndex As Integer For Each SlideObj In ActivePresentation.Slides For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1 Set ShapeObj = SlideObj.Shapes(ShapeIndex) If ShapeObj.Type = msoTextBox Then If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then ShapeObj.Delete End If End If Next ShapeIndex Next SlideObjEnd Sub

Houd er rekening mee dat deze code door alle dia ‘ s loopt en alle tekstvakken verwijdert die geen tekst hebben., De count variabele decrements in plaats van increments omdat elke keer dat de code Een object verwijdert, het verwijdert dat object uit de collectie, waardoor het aantal vermindert.

Kopieer een contact van Outlook naar Word

Sub CopyCurrentContact() Dim OutlookObj As Object Dim InspectorObj As Object Dim ItemObj As Object Set OutlookObj = CreateObject("Outlook.Application") Set InspectorObj = OutlookObj.ActiveInspector Set ItemObj = InspectorObj.CurrentItem Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)End Sub

let op dat deze code het momenteel geopende contact in Outlook kopieert naar het open Word-document. Deze code werkt alleen als er een contact is dat momenteel open is voor inspectie in Outlook.

ondersteuning en feedback

heeft u vragen of feedback over Office VBA of deze documentatie?, Zie Office VBA support en feedback voor advies over de manieren waarop u ondersteuning kunt krijgen en feedback kunt geven.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *