Het VBA-sleutelwoord "public" bestaat om VBA-functies toegankelijk maken voor andere VBA-functies en subroutines. Specifiek, maakt het het mogelijk voor een VBA-functie of de 'sub' een functie aanroept in een andere module. Weten wanneer te gebruiken publieke functies kunt geven aan iemand uw VBA-programma dat een functie een beperkt gebruik heeft studeren. Dit helpt de persoon te begrijpen van de rol van de functie en het relatieve belang in uw programma.
Doel
Het doel van een publieke functie wil bieden volledige toegang tot een functie van een andere subroutine in een Excel-werkmap. Bijvoorbeeld, als u een functie genaamd "ParseLastName", die de achternaam van een persoon uit een tekenreeks met zowel voor- en achternamen haalt hebt geschreven, wellicht vele delen van uw VBA-code, verspreid in verschillende codering modules, om deze functie te gebruiken. Deze modules maken van de functie privé zou voorkomen van het gebruik van "ParseLastName", dus deze functie openbaar maken.
Herkennen
U kunt herkennen als een functie openbaar is door te zoeken naar het sleutelwoord "public" voor het trefwoord "functie" in elke plaats in VBA waarin u een subroutine schrijven kunt, met inbegrip van de module 'ThisWorkbook', klassemodules en de "Blad" modules, die in het bezit van subroutines van elk werkblad in een Excel-werkmap. Niet alle openbare functies gebruiken echter het sleutelwoord "public". Als dit sleutelwoord ontbreekt, is de functie nog steeds openbaar is, tenzij er het sleutelwoord "private", zoals in "prive-functie someFunction."
Voorbeeldtoepassing
Publieke functies bieden de middelen voor het maken van de gebruiker gedefinieerde functies die Excel-in het dialoogvenster 'Insert-functie' in het tabblad "Formules lijsten". Als u wilt maken van een door de gebruiker gedefinieerde functie gebruiken waarmee het aantal dagen tot de volgende Kerstmis berekent, eerst de volgende openbare functie plakken in een nieuwe VBA-module, dan terug naar Excel en klik op de "Fx"-knop boven het werkblad raster. Klik op de "User defined" categorie, dan dubbelklikt u op de "DaysToChristmas"-item dat wordt weergegeven. Excel wordt uw functie ingevoegd in het actieve werkblad.
Public Function DaysToChristmas() As Integer
Dim kerst
Dim CurrentYear As Integer
CurrentYear = Year(Now)
Kerstmis = "12/25 /" & CurrentYear
DaysToChristmas = DateDiff ("d", nu(), DateValue(Christmas))
End Function
Wanneer niet gebruiken
Gebruik geen een publieke functie wanneer u een subroutine voor gebruik in een specifieke context hebt geschreven. Een prive-functie te gebruiken. Bijvoorbeeld, als u een functie aan strook uit het derde teken vanaf het begin van een string nodig, en slechts één subroutine deze functie oproept, schrijf deze helper functie in dezelfde module als de subroutine die het nodig heeft, en verklaren het privé. Het gevaar van het openbaar te verklaren is dat u later wellicht om te schrijven een andere openbare functie met dezelfde naam. VBA wordt een foutbericht weergegeven in dit geval, omdat het niet weet welke functie u wilde uitvoeren.