The VBA "public " søkeord finnes for å gjøre VBA-funksjoner tilgjengelig for andre VBA-funksjoner og subrutiner . Spesielt , det gjør det mulig for en VBA-funksjon eller " sub " for å kalle en funksjon i en annen modul . Å vite når man skal bruke offentlige funksjoner gjør at du kan indikere overfor noen studere ditt VBA -programmet som en funksjon har en begrenset bruk . Dette hjelper personen forstå funksjonen rolle og relative betydning i programmet. Formål
Hensikten med en offentlig funksjon er å gi full tilgang til en funksjon fra en hvilken som helst annen subrutine i en Excel-arbeidsbok . For eksempel, hvis du har skrevet en funksjon som heter " ParseLastName " som trekker ut en persons etternavn fra en streng som inneholder både fornavn og etternavn , kan mange deler av VBA-kode , spredt i ulike koding moduler, må bruke denne funksjonen. Å gjøre funksjonen private ville hindre disse modulene fra å bruke " ParseLastName ", så gjør denne funksjonen publikum.
Erkjennelsen
Du kan kjenne igjen hvis en funksjon er offentlig ved å se etter "offentlig " søkeord før søkeordet "funksjon" i noen plass i VBA hvor du kan skrive en subrutine , inkludert " ThisWorkbook " modul , klasse moduler og " skjema " moduler , som holder subrutiner for hvert regneark i en Excel-arbeidsbok . Ikke alle offentlige funksjoner bruker den "offentlige " søkeord , imidlertid. Hvis dette søkeordet mangler, er funksjonen fortsatt offentlig , med mindre det har " private " søkeord , som i " privat funksjon someFunction . "
Sample Application
< p > Offentlige funksjoner gi midlene for å lage brukerdefinerte funksjoner som Excel-lister i sin "Sett inn funksjon " dialogboksen i " formler "-kategorien . For å opprette en brukerdefinert funksjon som beregner antall dager til neste jul , først lim inn følgende offentlig funksjon i en ny VBA -modul , og deretter gå tilbake til Excel og klikk på " Fx " knappen over regneark-rutenettet . Klikk på " Brukerdefinert " kategori, og deretter dobbeltklikker du på " DaysToChristmas " element som vises. Excel setter din funksjon i det aktive regnearket .
Offentlig funksjon DaysToChristmas () As Integer
Dim julen
Dim CurrentYear As Integer
CurrentYear = Året ( nå)
julen = " 12/25 /" & CurrentYear
DaysToChristmas = DateDiff ( " d" , now () , DateValue (Christmas ) )
End Function
når ikke å bruke
ikke bruk en offentlig funksjon når du har skrevet en subrutine for bruk i en bestemt kontekst. Bruk en egen funksjon i stedet. For eksempel , hvis du trenger en funksjon for å kle av tredje tegnet fra starten av en streng , og bare en subrutine vil kalle denne funksjonen , skriver dette hjelper funksjon i samme modul som subrutine som trenger det , og erklære det private. Faren for å erklære det offentlige er at du senere trenger å skrive en annen offentlig funksjon med samme navn . VBA vil vise en feilmelding i dette tilfellet , fordi den ikke vet hvilken funksjon du skal utføre .