Lai gan VBA piedāvā pienācīgu iebūvēto funkciju klāstu, jūs ne vienmēr atradīsit tieši to, kas jums nepieciešams. Par laimi, VBA procedūrās varat izmantot arī lielāko daļu Excel darblapas funkciju. Vienīgās darblapas funkcijas, kuras nevarat izmantot, ir tās, kurām ir līdzvērtīga VBA funkcija. Piemēram, jūs nevarat izmantot Excel funkciju RAND (kas ģenerē nejaušu skaitli), jo VBA ir līdzvērtīga funkcija: Rnd.
VBA padara Excel darblapas funkcijas pieejamas, izmantojot objektu WorksheetFunction, kas atrodas lietojumprogrammas objektā. Tālāk ir sniegts piemērs tam, kā VBA priekšrakstā varat izmantot Excel funkciju SUM.
Kopā = Application.WorksheetFunction.SUM(diapazons("A1:A12")
Varat izlaist izteiksmes daļu Application vai WorksheetFunction. Jebkurā gadījumā VBA izdomā, ko jūs darāt. Citiem vārdiem sakot, šie trīs izteicieni darbojas tieši tāpat:
Kopā = Application.WorksheetFunction.SUM(diapazons("A1:A12")
Kopā = WorksheetFunction.SUM(diapazons("A1:A12")
Kopā = pielietojums.SUMMA(diapazons("A1:A12")
Mana personīgā izvēle ir izmantot WorksheetFunction daļu, lai būtu pilnīgi skaidrs, ka kods izmanto Excel funkciju.
Darblapas funkciju piemēri
Šeit jūs uzzināsit, kā izmantot darblapu funkcijas savās VBA izteiksmēs.
Maksimālās vērtības atrašana diapazonā
Šeit ir piemērs, kas parāda, kā VBA procedūrā izmantot Excel darblapas funkciju MAX. Šī procedūra parāda maksimālo vērtību aktīvās darblapas A slejā:
Darblapas funkcijas izmantošana VBA kodā.
Sub ShowMax()
Dim TheMax As Double
Maksimālais = WorksheetFunction.MAX(diapazons (“A:A”))
MsgBox TheMax
Beigu apakš
Varat izmantot funkciju MIN, lai iegūtu mazāko vērtību diapazonā. Un, kā jūs varētu gaidīt, jūs varat izmantot citas darblapas funkcijas līdzīgā veidā. Piemēram, varat izmantot funkciju LARGE, lai noteiktu k -to lielāko vērtību diapazonā. To parāda šāda izteiksme:
SecondHighest = darblapas funkcija.LARGE(diapazons(“A:A”),2)
Ņemiet vērā, ka funkcija LARGE izmanto divus argumentus. Otrais arguments apzīmē k daļu — 2, šajā gadījumā (otrā lielākā vērtība).
Hipotēkas maksājuma aprēķināšana
Nākamajā piemērā hipotēkas maksājuma aprēķināšanai tiek izmantota PMT darblapas funkcija. Trīs mainīgie tiek izmantoti, lai saglabātu datus, kas tiek nodoti funkcijai Pmt kā argumenti. Ziņojuma lodziņā tiek parādīts aprēķinātais maksājums.
Sub PmtCalc()
Dim IntRate As Double
Dim LoanAmt As Double
Tik ilgi blāvi periodi
Intrate = 0,0625/12
Periodi = 30 * 12
Aizdevuma summa = 150 000
MsgBox WorksheetFunction.PMT(IntRate, Periods, -Aizdevuma summa)
Beigu apakš
Kā parādīts tālāk sniegtajā paziņojumā, vērtības varat ievietot arī tieši kā funkcijas argumentus:
MsgBox WorksheetFunction.PMT(0,0625 /12, 360, -150000)
Tomēr mainīgo lielumu izmantošana parametru saglabāšanai padara kodu vieglāk lasāmu un vajadzības gadījumā modificējamu.
Izmantojot uzmeklēšanas funkciju
Nākamajā piemērā tiek izmantotas VBA funkcijas InputBox un MsgBox, kā arī Excel funkcija VLOOKUP. Tas pieprasa detaļas numuru un pēc tam iegūst cenu no uzmeklēšanas tabulas. Tālāk diapazons A1:B13 tiek nosaukts par cenu sarakstu.
Diapazonā ar nosaukumu PriceList ir iekļautas detaļu cenas.
Sub GetPrice()
Dim PartNum kā variants
Maza cena kā dubultā
PartNum = InputBox (“Ievadiet daļas numuru”)
Izklājlapas (“Cenas”). Aktivizējiet
Cena = WorksheetFunction.VLOOKUP (Daļas numurs, diapazons (“Cenu saraksts”)), 2, False)
MsgBox PartNum & “izmaksas” un cena
Beigu apakš
Lūk, kā darbojas GetPrice procedūra:
-
VBA funkcija InputBox pieprasa lietotājam daļas numuru.
-
Lietotāja ievadītais daļas numurs tiek piešķirts mainīgajam PartNum.
-
Nākamais paziņojums aktivizē darblapu Cenas, ja vien tā vēl nav aktīvā lapa.
-
Kods izmanto funkciju VLOOKUP, lai tabulā atrastu daļas numuru.
-
Ņemiet vērā, ka šajā paziņojumā izmantotie argumenti ir tādi paši kā argumenti, kurus izmantotu ar funkciju darblapas formulā. Šis paziņojums piešķir funkcijas rezultātu mainīgajam Cena.
-
Kods parāda detaļas cenu, izmantojot funkciju MsgBox.
Šai procedūrai nav nekādu kļūdu apstrādes, un tā neizdodas, ja ievadāt neesošu daļas numuru. (Izmēģiniet to.) Ja šī būtu reāla lietojumprogramma, kas tiek izmantota reālā biznesā, jūs vēlaties pievienot dažus paziņojumus, kas graciozāk risina kļūdas.
Darblapas funkciju ievadīšana
Jūs nevarat izmantot dialoglodziņu Excel ielīmēšanas funkcija, lai ievietotu darblapas funkciju VBA modulī. Tā vietā ievadiet šādas funkcijas vecmodīgā veidā: ar roku. Tomēr varat izmantot dialoglodziņu Ielīmēt funkciju, lai identificētu funkciju, kuru vēlaties izmantot, un uzzinātu par tās argumentiem.
Varat arī izmantot VBE automātiskā saraksta dalībnieku iespēju, kas parāda visu darblapas funkciju nolaižamo sarakstu. Vienkārši ierakstiet Application.WorksheetFunction , kam seko punkts. Pēc tam tiek parādīts izmantojamo funkciju saraksts. Ja šī funkcija nedarbojas, izvēlieties VBE komandu Rīki → Opcijas, noklikšķiniet uz cilnes Redaktors un atzīmējiet izvēles rūtiņu blakus Automātiskā saraksta dalībnieki.
Darblapas funkciju saraksta iegūšana, ko varat izmantot savā VBA kodā.
Vairāk par darblapas funkciju izmantošanu
VBA jaunpienācēji bieži jauc VBA iebūvētās funkcijas un Excel darbgrāmatas funkcijas. Labs noteikums, kas jāatceras, ir tāds, ka VBA nemēģina no jauna izgudrot riteni. Lielākoties VBA nedublē Excel darblapas funkcijas.
Lielākajai daļai darblapas funkciju, kas nav pieejamas kā objekta WorksheetFunction metodes, varat izmantot līdzvērtīgu VBA iebūvēto operatoru vai funkciju. Piemēram, MOD darblapas funkcija nav pieejama objektā WorksheetFunction, jo VBA ir ekvivalents: tā iebūvētais Mod operators.
Apakšējā līnija? Ja jums ir jāizmanto funkcija, vispirms noskaidrojiet, vai VBA ir kaut kas, kas atbilst jūsu vajadzībām. Ja nē, pārbaudiet darblapas funkcijas. Ja nekas cits neizdodas, iespējams, varat rakstīt pielāgotu funkciju, izmantojot VBA.