VBA-gebruikersformulieren
Het gebruikersformulier is een zeer belangrijk onderdeel van het programmeren in VBA. Hiermee kunt u een professioneel ogende gebruikersinterface bouwen om te communiceren met de gebruikers van uw VBA-toepassing. Het stelt u ook in staat om de gebruiker volledig te controleren in wat ze met uw werkmap doen.
U kunt natuurlijk werkbladcellen gebruiken om parameters van de gebruiker te accepteren, maar het gebruikersformulier zorgt voor een veel betere gebruikerservaring.
Door de hoogte en breedte van uw gebruikersformulier uit te breiden tot de grootte van het Excel-venster, kunt u uw toepassing eruit laten zien als een normale Windows-toepassing, waarbij de gebruiker zich totaal niet bewust is dat hij Excel als host gebruikt.
Alle normale Windows-besturingselementen, zoals vervolgkeuzelijsten, keuzelijsten, aankruisvakken zijn voor u beschikbaar. Je hebt ook een enorm scala aan methoden, evenementen en eigenschappen die je kunt gebruiken om de gebruikerservaring te verbeteren.
Een belangrijk punt is dat wanneer u een gebruikersformulier weergeeft dat ingebouwd of modaal is, u uw code niet kunt bewerken in de VBE en ook geen toegang hebt tot Excel-functionaliteit. Pas als het formulier is gesloten, verschijnt de cursor in uw code.
Ingebouwde VBA-gebruikersformulieren
Excel VBA als verschillende ingebouwde formulieren die kunnen worden gebruikt om met de gebruiker te communiceren.
Berichten box
Dit is de meest gebruikte vorm in VBA. Het geeft gewoon een sms-bericht weer, waarbij een gebruiker mogelijk wordt geïnformeerd dat ze ongeldige invoer hebben ingevoerd of dat een VBA-proces is voltooid. In hun eenvoudigste vorm geven ze een tekstreeks weer, maar u kunt ook een pictogram toevoegen, zoals een vraag of uitroepteken, en het berichtvenster een andere titel geven.
Dit is een eenvoudig voorbeeld. Er is maar één knop om op te klikken en de titelbalk zegt 'Microsoft Excel'
De code om dit te produceren is heel eenvoudig:
123 | Sub TestMsgBox()MsgBox "Dit proces is voltooid"Einde sub |
U kunt verschillende parameters gebruiken om knoppen en pictogrammen toe te voegen en de titelbalk te wijzigen
123456789 | Sub TestMsgBox()Dim Ret als variantRet = MsgBox("Weet u het zeker?", vbYesNo of vbQuestion, "Mijn aanvraag")Als Ret = vbJa Dan'Uw proces hier'AndersSluit subStop alsEinde sub |
Deze code voegt een 'Ja'- en 'Nee'-knop en een vraagtekenpictogram toe en stelt de titelbalk in. Merk op dat u de stijlen van het berichtvenster kunt combineren met de 'Or'-operator
Wanneer u een waarde uit een berichtvenster retourneert, moet de variabele retour ook worden gedefinieerd als een variant of vbMsgBoxResult, en moet de berichtvensterinstructie haakjes gebruiken,
Invoerveld
Er is een heel eenvoudig invoervak ingebouwd in VBA, hoewel het vrij beperkend is in wat je ermee kunt doen. Als je kunt, is het beter om een aangepast gebruikersformulier te ontwerpen
12345 | Sub TestInputBox()Dim Ret As StringRet = InputBox ("Voer uw naam in", "Voer naam in")MsgBox RetEinde sub |
U kunt ook een standaardwaarde voor de invoer toevoegen aan de parameters.
Open bestandsnaam ophalen
Hiermee kunt u het Windows-bestandsdialoogvenster gebruiken in uw VBA-code. Het ziet er erg indrukwekkend uit voor de gebruiker wanneer het draait, maar het is heel eenvoudig te integreren en je krijgt er automatisch alle bestandsdialoogfunctionaliteit bij.
De code beperkt de gebruiker om alleen Excel-bestanden te zien. Helaas kunnen ze een niet-Excel-bestandsnaam typen in het vak Bestandsnaam en op de knop Openen klikken, dus je hebt wat code nodig om ervoor te zorgen dat een Excel-bestand is geselecteerd.
Gebruik de opdracht 'ChDir' om de standaardmap naar uw eigen vereisten te wijzigen voordat het bestandsdialoogvenster wordt weergegeven
Let op het gebruik van jokertekens in de parameter FileFilter. De weer te geven Excel-bestanden kunnen van vóór 2007 zijn, macro's hebben of binair zijn, dus het filter is '.xls*'.
123456 | Sub TestFileDialog()Dim MyFile als stringChDir "C:\temp"MyFile = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*", , "Selecteer een bestand")MsgBox MijnBestandEinde sub |
Indien nodig kunt u de gebruiker meerdere bestanden tegelijk laten selecteren met behulp van de MultiSelect-parameter. De standaardwaarde is False (alleen één selectie)
12345678 | Sub TestFileDialog()Dim MyFile als variantChDir "C:\temp"MyFile = Application.GetOpenFilename("Excel-bestanden (*.xls*),*.xls*", , "Selecteer een bestand", , True)Voor elke f in Mijn bestandMsgBox voorvolgende fEinde sub |
De gebruiker houdt de Shift-toets ingedrukt in het bestandsdialoogvenster om meerdere bestanden te selecteren.
De For Each-lus toont het volledige pad en de naam van elk geselecteerd bestand
Excel-standaarddialogen
Binnen Excel VBA is er een Dialogs-verzameling die u kunt gebruiken om elk standaard Excel-dialoogvenster weer te geven. Het nadeel is dat u geen toegang hebt tot de parameters die de gebruiker heeft gekozen of het uiterlijk van het dialoogvenster kunt wijzigen, maar deze dialoogvensters kunnen nuttig zijn om de gebruiker naar een standaard Excel-functie te leiden en hen in staat te stellen specifieke parameters in het dialoogvenster te kiezen.
Een goed voorbeeld hiervan is om het dialoogvenster 'Afdrukken' vanuit VBA weer te geven:
123 | SubtestPrintDialog()Application.Dialogs(xlDialogPrint).ToonEinde sub |
Wanneer u de haakjes in de Dialogs-collectie opent, ziet u een lijst met een groot aantal constanten voor ingebouwde dialoogvensters. Het is de moeite waard om met enkele van deze opties in je code te experimenteren
Een nieuw gebruikersformulier invoegen
U kunt uw eigen aangepaste gebruikersformulieren ontwerpen door een gebruikersformulier in te voegen in de Visual Basic Editor (VBE)
Dit doe je door Invoegen | . te selecteren UserForm op de VBE-menubalk.
Klik op 'UserForm' en er verschijnt een nieuw blanco formulier waarop u zich kunt ontwikkelen
Het daadwerkelijke formulier zelf (weergegeven als 'UserForm1') ziet er vrij klein uit, maar je kunt de handvatten eromheen gebruiken om het te vergroten of nog kleiner te maken door de handvatten met je cursor te slepen.
Er is een eigenschappenvenster in de linkerbenedenhoek van het scherm. Omdat de focus direct op het formulier zelf ligt, bevat dit alle eigenschappen voor het formulier die specifiek zijn voor dat formulier.
Houd er rekening mee dat wanneer u besturingselementen zoals keuzelijsten en opdrachtknoppen begint toe te voegen, deze besturingselementen allemaal hun eigen set eigenschappen hebben en dat ze heel verschillend kunnen zijn in wat u met elk van hen kunt doen.
De eigenschappen die u momenteel ziet, zijn alleen van toepassing op het formulier zelf.
De eigenschap 'Naam' is de naam die wordt gebruikt om uw formulierobject binnen de VBA-code te definiëren. Misschien wilt u iets zinvoller gebruiken voor de objectnaam, zodat wanneer u uw code bekijkt, duidelijk is welke vorm wordt gebruikt.
De eigenschap 'Naam' wordt ook weergegeven in het venster 'Projectverkenner' in de linkerbovenhoek van het scherm
U wilt de titelbalk van uw formulier wijzigen in iets anders dan 'UserForm1', en u kunt dit doen door uw nieuwe tekst in te typen bij de eigenschap 'Caption'
U kunt een groot aantal wijzigingen aanbrengen in hoe uw formulier door de gebruiker wordt gezien. U kunt kleuren wijzigen, afbeeldingen toevoegen, b.v. een bedrijfslogo, wijzig de positie met 'Links' en 'Boven', wijzig de grootte met 'Hoogte' en 'Breedte', wijzig de muisaanwijzer en nog veel meer
Al deze eigenschappen kunnen ook programmatisch worden gewijzigd voor elk besturingselement dat u aan uw formulier hebt toegevoegd. Een gebruiker kan bijvoorbeeld een besturingselement uit een keuzelijst selecteren en u wilt mogelijk andere besturingselementen uitschakelen of verbergen op basis van de keuze van de gebruiker
De Toolbox gebruiken
U zult merken dat wanneer u op het formulier zelf klikt, er een toolbox-pop-up verschijnt. Als u ergens anders klikt, b.v. het eigenschappenvenster, zal het verdwijnen, maar opnieuw verschijnen wanneer u op het formulier klikt.
De toolbox biedt de echte mechanica van het formulierontwerp. Hierdoor kunt u de normale Windows-besturingselementen die gebruikers kennen, aan uw formulier toevoegen.
U zult hebben gezien dat er op het formulier een netwerk van stippen is. Dit is een 'snapgrid', zodat wanneer u een besturingselement aan het formulier toevoegt, het automatisch de positie uitlijnt met de rijen en kolommen met punten. Dit helpt enorm bij het uitlijnen van uw bedieningselementen, zodat u geen rafelig uiterlijk van de bedieningselementen krijgt
Als u op een besturingselement klikt en vervolgens besluit het niet te gebruiken, zal het klikken op het 'pijl'-pictogram in de linkerbovenhoek van de toolbox uw cursor weer normaal maken.
U kunt extra besturingselementen aan de toolbox toevoegen met behulp van Extra | Extra bedieningselementen in het VBE-menu. Er zijn een aanzienlijk aantal van deze beschikbaar, maar afhankelijk van uw Windows- en Excel-versies werken ze niet altijd, dus er moet vaak geëxperimenteerd worden.
Het is ook mogelijk dat uw gebruikers geen toegang hebben tot sommige van deze extra besturingselementen of dat ze oudere versies van Windows en Excel gebruiken, wat problemen kan veroorzaken. In grote organisaties, vooral als ze wereldwijd zijn, bestaat er niet zoiets als een standaard gebouwde pc waarop u kunt vertrouwen!
Een afsluitknop aan uw formulier toevoegen
Een Command-knop is eenvoudig toe te voegen aan het formulier. Dit ziet er hetzelfde uit als knoppen die u in andere Windows-formulieren ziet, meestal als een knop 'OK' of 'Annuleren'.
Klik op het pictogram Opdrachtknop in de gereedschapskist. Dit is het tweede pictogram van links op de onderste rij met pictogrammen. Zie de afbeelding hierboven. Er staan de letters 'ab' op.
U kunt ofwel uw muisknop ingedrukt houden en het besturingselement naar uw formulier slepen, of u kunt de cursor naar het formulier verplaatsen, waar het zal veranderen in een 'kruis'-cursor en u kunt uw knop positioneren en aanpassen
Als u het besturingselement naar het formulier sleept, krijgt u de standaardgrootte van de knop. Door de cursor naar het formulier te verplaatsen, kunt u de grootte van de knop wijzigen door de 'kruiscursor' over uw formulier te slepen
Je formulier ziet er nu als volgt uit:
De knop heeft standaardtekst als bijschrift, maar u wilt deze naar uw eigen wensen wijzigen. U kunt op de tekst binnen de knop klikken ('CommandButton1') en hiermee kunt u het bijschrift direct bewerken.
U kunt dit ook wijzigen in het eigenschappenvenster (linksonder in het scherm). U ziet een eigenschap genaamd 'Bijschrift' en u kunt de waarde hiervoor bewerken. Wijzig dit in 'Afsluiten'
Net als bij de formuliereigenschappen, definieert de eigenschap 'Naam' de naam die in uw VBA-code wordt gebruikt. Misschien wilt u een naam gebruiken die zinvoller en voor de hand liggend is in uw code. Deze kunt u invullen bij de eigenschap ‘Naam’.
U kunt de knop verplaatsen door deze over het formulier te slepen, en u kunt het formaat wijzigen door op de knophandvatten (witte vierkante vakken) te klikken en de handgrepen te slepen om het groter of kleiner te maken
U kunt de grootte van de knop ook wijzigen door de waarden voor Hoogte en Breedte in het eigenschappenvenster te wijzigen
U kunt uw formulier in Excel bekijken door op het groene driehoekje in de VBE-werkbalk te klikken of door op F5 . te drukken
U kunt uw formulier vanuit VBA-code binnen een module oproepen met behulp van de 'Show'-methode
123 | Sub ShowForm()UserForm1.ToonEinde sub |
Uw gebruikersformulier is in feite een globaal object en kan overal in uw code worden aangeroepen
Momenteel doet uw opdrachtknop niets omdat er geen VBA-code achter zit. Dit moet je zelf schrijven! Het enige dat op dit moment kan gebeuren, is dat u op de X 'Sluiten' in de rechterbovenhoek van uw formulier kunt klikken.
Dubbelklik op de knop op het formulier om VBA-code toe te voegen
Dit brengt u naar het normale VBA-codevenster en toont de standaardgebeurtenis van klikken.
U gebruikt de methode 'Verbergen' om het formulier te sluiten en u kunt ook een andere code toevoegen, zoals een berichtvenster om de gebruiker te bevestigen wat er is gebeurd.
Merk op dat het codevenster bovenaan twee vervolgkeuzelijsten heeft. Met de eerste kunt u uw formulierbesturingselementen selecteren en de tweede toont alle gebeurtenissen die voor u beschikbaar zijn om code toe te voegen. De voor de hand liggende voor een knop is de 'Click'-gebeurtenis, maar er zijn andere, zoals 'Double Click' of 'Mouse Move'
Wanneer u uw formulier nu uitvoert, doet de knop daadwerkelijk iets. Het formulier verdwijnt en er wordt een bericht weergegeven waarin wordt bevestigd dat het formulier is gesloten
U kunt de exitcode natuurlijk vergroten. Misschien wilt u een ander formulier weergeven of actie ondernemen op parameters die de gebruiker op uw formulier heeft ingevoerd
Een labelbesturing toevoegen aan een formulier
Labelbesturingselementen zijn bedoeld om de gebruiker te vragen welk soort gegevens ze moeten invoeren in een besturingselement op het formulier, b.v. tekstvak, vervolgkeuzelijst, etc. Een label heeft standaard geen randen, maar deze kunnen indien nodig worden toegevoegd via het eigenschappenvenster.
Als controle zijn ze alleen voor de gebruiker en zijn ze gewoon een manier om tekst op het formulier te zetten, of het nu een vetgedrukte kop is, of een instructie over wat in te voeren of te kiezen.
Om een label toe te voegen, klikt u op het 'A'-pictogram in de toolbox (bovenste rij, tweede van links) en dubbelklikt u erop of verplaatst u uw cursor naar het formulier en selecteert u positie en grootte.
Met behulp van de eigenschap 'Bijschrift' in het eigenschappenvenster of door op het labelbesturingselement te klikken, kunt u de tekst voor het labelbesturingselement invoeren.
Houd er rekening mee dat de tekst zal teruglopen volgens de grootte van het labelbesturingselement, en als de tekstreeks te lang is, wordt deze niet volledig op het formulier weergegeven, dus u moet voorzichtig zijn met de grootte van het labelbesturingselement.
Met behulp van het eigenschappenvenster kunt u het uiterlijk van het labelbesturingselement wijzigen, met verschillende kleuren, lettertypen, achterstijl, b.v. als het een afbeelding overlapt en je wilt dat het transparant is
Voor een labelcontrole hoeft geen code te worden aangemaakt. Het belangrijkste doel is om tekst aan het formulier toe te voegen, zodat de gebruiker kan zien hoe alle andere bedieningselementen werken
Een tekstbesturingselement toevoegen aan het formulier
Een tekstbesturingselement wordt gebruikt om de gebruiker in staat te stellen tekst in te voeren, bijvoorbeeld door een naam of opmerkingen in te voeren
Het tekstbesturingselement wordt toegevoegd vanuit de toolbox door op het tekstbesturingspictogram te klikken (bovenste rij, derde van links) en te dubbelklikken of het besturingselement naar de positie op uw formulier te slepen.
Het tekstbesturingselement wordt vaak verward met het labelbesturingselement, maar het tekstbesturingselement is voor gebruikersinvoer
De tekst 'Voer uw naam in' is een labelbesturingselement, zoals eerder beschreven, en we hebben nu een wit tekstvak klaar voor de gebruiker om iets in te typen
Met behulp van het eigenschappenvenster kunt u de kleuren, lettertypen, speciale effecten wijzigen of wachtwoordtekens gebruiken voor uw tekstvak. Er is een enorme flexibiliteit beschikbaar
Een zeer belangrijke eigenschap voor een tekstvak is de eigenschap ‘MultiLine’. Als u wilt dat de gebruiker een grote hoeveelheid tekst invoert in het tekstbesturingselement, b.v. opmerkingen, dan moet de eigenschap 'MultiLine' worden ingesteld op True.
Het is standaard False, wat betekent dat hoe groot u uw tekstvak ook maakt, de ingevoerde tekst op één ononderbroken regel blijft staan en uit het tekstvak zal scrollen. Het zal niet in de doos wikkelen.
Er is geen pop-up wanneer u met de rechtermuisknop op uw tekstvak klikt wanneer het actief is, maar CTRL+V werkt voor Plakken en CTRL+C werkt voor Knippen, mocht de gebruiker tekst willen knippen en plakken van en naar andere toepassingen
Nogmaals, je moet je eigen code schrijven om te gaan met tekst die de gebruiker heeft ingetypt. Misschien wil je deze overzetten naar een cel in een werkblad
Je kunt deze code toevoegen aan de gebeurtenis 'Wijzigen' voor het tekstvak
123 | Privé Sub TextBox1_Change()Bladen ("Blad1"). Bereik ("A1"). Waarde = TextBox1. WaardeEinde sub |
U kunt ook een validatiecode invoeren om te controleren of de gebruiker geen onzin invoert, wat desastreuze gevolgen zal hebben voor uw toepassing
De change-gebeurtenis is hier niet goed voor, omdat deze elke keer wordt aangeroepen als de gebruiker een nieuw teken invoert. De gebruiker kan beginnen met het typen van een reeks tekst en onmiddellijk ontdekken dat ze uw validatieregels hebben overtreden voordat ze een geldige tekst hebben voltooid.
U gebruikt de gebeurtenis ‘Afsluiten’. Dit wordt geactiveerd wanneer de gebruiker de focus naar een ander besturingselement op het formulier verplaatst, wat betekent dat de gebruiker geen gegevens meer invoert.
123456 | Private Sub TextBox1_Exit (ByVal Annuleren als MSForms.ReturnBoolean)If IsNull(TextBox1.Value) of Len(TextBox1.Value) < 4 DanMsgBox "Naam is ongeldig", vbCriticalTextBox1.Focus instellenStop alsEinde sub |
Wanneer de gebruiker op een ander besturingselement op het formulier klikt, test deze code op een null-waarde in het tekstvak of op minder dan 4 tekens. Als de test waar is, verschijnt er een berichtvenster met een kritiek pictogram om de gebruiker te informeren dat de naam ongeldig is, en wordt de focus terugverplaatst naar het beledigende tekstvak zodat de gebruiker dit kan corrigeren.
Merk op dat zelfs als de gebruiker op de knop Afsluiten klikt, de exit-gebeurtenis in het tekstvak als eerste wordt uitgevoerd, dus dit voorkomt dat de gebruiker afsluit zonder de invoer te corrigeren
Gebeurtenissen op een formulier initialiseren en activeren
Wanneer VBA voor het eerst een formulier maakt en bouwt, wordt een gebeurtenis 'Initialiseren' geactiveerd. Omdat het formulier echter ook op dit punt wordt weergegeven, activeert het ook een gebeurtenis 'Activeren'. Vanaf dat moment wordt elke keer dat het formulier wordt weergegeven met behulp van de 'Toon'-methode of als het verschijnt als onderdeel van een hiërarchie van formulieren, de gebeurtenis 'Activeren' geactiveerd, maar niet de gebeurtenis 'Initialiseren'
De gebeurtenis 'Initialiseren' gebeurt maar één keer, maar de gebeurtenis 'Activeren' kan vele malen plaatsvinden
Op uw formulier wilt u misschien standaardwaarden instellen van het werkblad in de invoerbesturingselementen, b.v. tekstvakken, zodat deze verschijnen bij het eerste gebruik van het formulier, maar de gebruiker kan de standaardwaarden overschrijven en deze nieuwe waarden blijven van kracht zolang de code actief is
12345678 | Private Sub UserForm_Initialize()TextBox1.Waarde = Bladen ("Blad1"). Bereik ("A1"). WaardeIf TextBox1.Value="" DanTextBox1.Visible=FalseAndersTextBox1.Visible=TrueStop alsEinde sub |
U vindt de gebeurtenis 'Initialiseren' in de tweede vervolgkeuzelijst in het codevenster en de naam van het gebruikersformulier in de eerste vervolgkeuzelijst.
Deze code gebruikt de waarde in cel A1 op 'Blad1' als de standaardwaarde in het tekstvak dat eerder in dit artikel is gemaakt. Wanneer het formulier voor de eerste keer verschijnt, wordt de standaardwaarde weergegeven. De gebruiker kan dan de standaardwaarde overschrijven en deze blijft behouden. Als CellA1 leeg is, wordt het tekstvak verborgen, anders is het zichtbaar
De standaardwaarde kan ook hard gecodeerd zijn:
1 | TextBox1.Value = "Jan Smit" |
U kunt er ook voor zorgen dat de waarden die de gebruiker heeft ingevoerd, opnieuw verschijnen wanneer de gebruiker dat formulier in die specifieke Excel-sessie start. VBA-code kan de waarden gemakkelijk terugschrijven naar cellen in de werkmap met behulp van de 'Exit'-gebeurtenis op een besturingselement en ze opnieuw installeren met behulp van de 'Activate'-gebeurtenis op het formulier
123 | Private Sub TextBox1_Exit (ByVal Annuleren als MSForms.ReturnBoolean)Bladen ("Blad1"). Bereik ("A10"). Waarde = TextBox1. WaardeEinde sub |
123 | Privé subgebruikerForm_Activate()TextBox1.Waarde = Bladen ("Blad1"). Bereik ("A10"). WaardeEinde sub |
Deze code zorgt ervoor dat de waarden van de gebruiker blijvend zijn en zorgt er ook voor dat ze worden opgeslagen met de rest van de werkmap
Uw aanvraag en formulieren opslaan
Wanneer u uw Excel-werkmap met uw formulieren opslaat, worden alle formulieren en hun VBA-code ook opgeslagen. Alle waarden die de formulieren bevatten terwijl ze worden weergegeven, gaan echter verloren.
Het is belangrijk om code te schrijven zodat wanneer de gebruiker de werkmap of het formulier verlaat, de waarden worden teruggeschreven naar cellen in de werkmap en dus behouden blijven.
Modale en niet-modale vormen
Het formulier zelf heeft de eigenschap 'Show Modal'. Dit is standaard ingesteld op True, maar kan worden gewijzigd in False (niet-modaal)
Als een formulier modaal is, betekent dit dat geen van de Excel-functies toegankelijk is terwijl het formulier wordt weergegeven. Dit omvat uw code in het VBE-venster. U kunt de code bekijken, maar de cursor en het toetsenbord zijn uitgeschakeld.
In een niet-modaal formulier heeft u toegang tot alle Excel-functionaliteit, inclusief het VBE-venster, terwijl het formulier wordt weergegeven.
Dit is belangrijk vanuit het oogpunt van het beheersen van gebruikersgedrag
Een formulier sluiten
Hoe goed je je code ook schrijft om de gebruiker een bepaalde route af te dwingen, ze kunnen deze gemakkelijk omzeilen door op de 'Sluiten' X in de rechterbovenhoek van het formulier te klikken
U kunt dit voorkomen door de gebeurtenis 'QueryClose' van het formulier te wijzigen
1234 | Private Sub UserForm_QueryClose (Annuleren als geheel getal, CloseMode als geheel getal)Annuleren = WaarMsgBox "Deze actie is uitgeschakeld"Einde sub |
De gebeurtenis 'QueryClose' wordt geactiveerd wanneer de gebruiker op de 'Close' X van het formulier klikt. Deze code annuleert de actie, waardoor de gebruiker genoodzaakt is om je ‘Exit’ knop en de code die je erachter hebt te gebruiken.
Bedieningselementen in- en uitschakelen
Alle besturingselementen op uw formulier hebben een eigenschap genaamd 'Enabled' die is ingesteld op True of False. Als het False is, wordt het besturingselement grijs weergegeven. Het is te zien, maar niet te gebruiken.
Er is ook een eigenschap genaamd 'Visible' die opnieuw is ingesteld op True of False.
U kunt code schrijven om een bepaald besturingselement onbruikbaar te maken, of om het volledig onzichtbaar te maken voor de gebruiker. Met behulp van een 'Als'-verklaring kunt u de omstandigheden kiezen waarin u dit moet doen
U kunt bijvoorbeeld de knop 'Afsluiten' in eerste instantie uitschakelen, totdat de gebruiker een waarde heeft ingevoerd in de TextBox1 (naam)
123 | Private Sub UserForm_Initialize()CommandButton1.Enabled = FalseEinde sub |
1234567 | Privé Sub TextBox1_Change()Als Len (TextBox1.Value) > 0 DanCommandButton1.Enabled = TrueAndersCommandButton1.Enabled = FalseStop alsEinde sub |
Deze code gebruikt het formulier 'Initialize'-gebeurtenis om de exit-knop (Command Button 1) uit te schakelen wanneer het formulier voor het eerst verschijnt en gebruikt vervolgens de 'Change'-gebeurtenis op TextBox1 (naam) om de Exit-knop in te schakelen als er iets is getypt of uit te schakelen het als het vak leeg is.
De gebeurtenis 'Wijzigen' wordt geactiveerd telkens wanneer een nieuw teken wordt ingevoerd of verwijderd uit het tekstvak. Als de gebruiker tekst probeert in te voeren om de knop in te schakelen en vervolgens alle tekst verwijdert, wordt de knop onmiddellijk uitgeschakeld