VBA programmēšanā funkcija atgriež vērtību. Programmā Excel 2016 varat izpildīt funkciju procedūras un izsaukt funkciju. Funkcijas, atšķirībā no apakšprocedūrām, var izpildīt tikai divos veidos:
Izmēģiniet šo vienkāršo funkciju. Ievadiet to VBA modulī:
Funkcija CubeRoot(skaitlis)
CubeRoot = skaitlis ^ (1/3)
Beigu funkcija
Šī funkcija ir diezgan viegla; tas tikai aprēķina skaitļa kuba sakni, kas tai nodota kā arguments. Tomēr tas nodrošina sākumpunktu funkciju izpratnei. Tas arī ilustrē svarīgu koncepciju par funkcijām: kā atgriezt vērtību. (Jūs atceraties, ka funkcija atgriež vērtību, vai ne?)
Ņemiet vērā, ka viena koda rindiņa, kas veido šo funkcijas procedūru, veic aprēķinu. Matemātikas rezultāts (skaitlis pakāpē 1/3) tiek piešķirts mainīgajam CubeRoot. Nav nejaušība, ka CubeRoot ir arī funkcijas nosaukums. Lai norādītu funkcijai, kāda vērtība jāatgriež, šī vērtība tiek piešķirta funkcijas nosaukumam.
Funkcijas izsaukšana no apakšprocedūras
Tā kā funkciju nevar izpildīt tieši, tā ir jāizsauc no citas procedūras. Ievadiet šo vienkāršo procedūru tajā pašā VBA modulī, kurā ir CubeRoot funkcija:
Sub CallerSub()
Ans = CubeRoot (125)
MsgBox Ans
Beigu apakš
Izpildot procedūru CallerSub, programmā Excel tiek parādīts ziņojuma lodziņš, kurā ir Ans mainīgā vērtība, kas ir 5.
Notiek šādi: tiek izpildīta funkcija CubeRoot, un tā saņem argumentu 125. Aprēķinu veic, izmantojot funkcijas kodu (izmantojot kā argumentu nodoto vērtību), un funkcijas atgrieztā vērtība tiek piešķirta mainīgajam Ans. Pēc tam funkcija MsgBox parāda mainīgā Ans vērtību.
Mēģiniet mainīt argumentu, kas tiek nodots funkcijai CubeRoot, un vēlreiz palaidiet CallerSub makro. Tas darbojas tāpat kā vajadzētu — pieņemot, ka funkcijai piešķirat derīgu argumentu (pozitīvu skaitli).
Starp citu, CallerSub procedūru varētu nedaudz vienkāršot. Mainīgais Ans nav īsti nepieciešams, ja vien jūsu kods vēlāk neizmantos šo mainīgo. Varat izmantot šo vienu paziņojumu, lai iegūtu tādu pašu rezultātu:
MsgBox CubeRoot (125)
Funkcijas izsaukšana no darblapas formulas
Tagad ir pienācis laiks izsaukt šo VBA funkcijas procedūru no darblapas formulas. Aktivizējiet darblapu tajā pašā darbgrāmatā, kurā ir CubeRoot funkcijas definīcija. Pēc tam jebkurā šūnā ievadiet šādu formulu:
=CubeRoot(1728)
Šūnā tiek parādīts 12, kas patiešām ir 1728 kuba sakne.
Kā jūs varētu gaidīt, kā CubeRoot funkcijas argumentu varat izmantot šūnas atsauci. Piemēram, ja šūna A1 satur vērtību, varat ievadīt =CubeRoot(A1) . Šajā gadījumā funkcija atgriež skaitli, kas iegūts, aprēķinot A1 vērtības kuba sakni.
Šo funkciju var izmantot neierobežotu skaitu reižu darblapā. Tāpat kā programmā Excel iebūvētās funkcijas, jūsu pielāgotās funkcijas tiek parādītas dialoglodziņā Funkcijas ievietošana. Noklikšķiniet uz rīkjoslas pogas Ievietot funkciju un izvēlieties kategoriju Lietotāja definēta. Dialoglodziņā Funkcijas ievietošana ir norādīta jūsu funkcija.
Funkcija CubeRoot parādās dialoglodziņa Funkcijas ievietošanas kategorijā User Defined.
Ja vēlaties, lai dialoglodziņš Funkcijas ievietošana parādītu funkcijas aprakstu, rīkojieties šādi:
Izvēlieties Izstrādātājs → Kods → Makro.
Programmā Excel tiek parādīts dialoglodziņš Makro, bet CubeRoot sarakstā neparādās. (CubeRoot ir funkciju procedūra, un šajā sarakstā ir redzamas tikai apakšprocedūras.) Neuztraucieties.
Lodziņā Makro nosaukums ierakstiet vārdu CubeRoot.
Noklikšķiniet uz pogas Opcijas.
Lodziņā Apraksts ievadiet funkcijas aprakstu.
Noklikšķiniet uz Labi, lai aizvērtu dialoglodziņu Makro opcijas.
Aizveriet dialoglodziņu Makro, noklikšķinot uz pogas Atcelt.
Šis aprakstošais teksts tagad parādās dialoglodziņā Funkcijas ievietošana.
Pārbaudiet CubeRoot funkciju, kas tiek izmantota darblapu formulās.
Funkcijas CubeRoot izmantošana formulās.