Alapvető vba funkciók. Hozzuk létre az első függvényünket Excelben. Függvény létrehozása VBA-ban opcionális argumentumokkal

28.03.2020 Vélemények

Dim nResult As Integer

nMult1 = CInt(InputBox("Írja be az első számot: ")) nMult2 = CInt(InputBox("Írja be a második számot: ")) nEredmény = fMultiply(nMult1, nMult2)

Selection.InsertAfter nResult Selection.Collapse wdCollapseEnd

4. A kód megjegyzéséhez AutoNew() , válassza ki az összes kódot ehhez az eljáráshoz (beleértve a Public Sub AutoNew() és End Sub ), majd kattintson a Megjegyzésblokk gombra a Szerkesztés eszköztáron.

3.9. A VBA nyelv beépített funkciói

3.9.1. Mik azok a beépített funkciók

NÁL NÉL A VBA programozási nyelv több tucatnyit biztosítbeépített funkciók. Bármely VBA-programban elérhetők, bármilyen környezetben is. szoftver termék mi vagyunk - Excel, Word, Access vagy például AutoCAD. Nagyon aktívan használják őket, és sok esetben nem lehet nélkülük megbirkózni. A professzionális programozók teljesen automatikusan alkalmazzák őket, és hétköznapi felhasználók Azt tanácsolom, hogy szánjon néhány órát ezek megismerésére, mert ezen funkciók ismerete nélkül nem fog tudni hatékonyan dolgozni VBA-ban. További érv ezek tanulmányozása mellett, hogy a szokásosban szinte azonos függvénykészlet található Visual Basicés VBScript, és sok ilyen funkció azonos névvel és szintaxissal más programozási nyelvekben is megtalálható - C ++, Delphi, Java, JavaScript stb.

NÁL NÉL A VBA súgójában a beépített függvények betűk szerint vannak csoportosítva (3.2. ábra).

A kurzusokon sok hallgató feltette a kérdést: van-e segítség ezekhez a funkciókhoz oroszul? Sajnos nem találtam ilyen hivatkozást, ezért ebben a könyvben megpróbálok egy rövid utalást adni. A továbbiakban a VBA nyelv legtöbb aktívan használt függvényéről lesz szó (a gyakorlati munkában szinte soha nem használt matematikai függvények, mint a koszinusz vagy tangens, és a pénzügyi függvényekre sem térünk ki). A függvények teljes szintaxisát helytakarékosság miatt nem adjuk meg: a lényeg az, hogy megértsük, mit csinálnak az egyes függvények, és milyen helyzetekben használhatók.

A következő szakaszokban szereplő funkciók funkcionalitásuk szerint vannak csoportosítva. Ha csak a függvény neve alapján kell információt találni, használhatja tárgymutató a könyv végén.

Rizs. 3.2. Segítség a beépített funkciókhoz

3.9.2. Adattípus átalakítás és ellenőrzési funkciók

A VBA-programokban nagyon gyakori az értékek konvertálása egyik adattípusról a másikra. Íme néhány tipikus helyzetek amikor meg kell tenned:

karakterlánc-érték átalakítása numerikus értékké, amikor értéket kap a felhasználótól az InputBox()-on keresztül;

dátum/idő érték sztringgé alakítása, amikor a dátumot vagy az időt ugyanúgy kell megjelenítenünk, függetlenül a felhasználók számítógépének regionális beállításaitól;

egy érték konvertálása karakterláncból dátum/idő értékre speciális dátum/idő függvények alkalmazásához.

Az adattípusok konvertálásához leggyakrabban olyan függvényeket használnak, amelyek neve a "C" előtagból (a Convert szóból) és az adattípus nevéből áll. A függvények listája a következő: CBool() , CByte() , CCur() , CDate() ,

CDbl(), CDec(), CInt(), CLng(), CSng(), CStr(), CVar(), CVDate(), CVERr().

A TypeName() függvény segítségével láthatja, hogy mi történt végül, ami visszaadja a használt adattípus nevét, például:

nVar1 = CInt(InputBox("Írja be az értéket")) MsgBox TypeName(nVar1)

Ebben az esetben ez a függvény az "Integer" értéket adja vissza.

Ezen kívül számos más hasznos funkció is rendelkezésre áll az átalakításhoz.

Str() - lehetővé teszi számértékek karakterláncsá alakítását. Majdnem ugyanazt csinálja, mint a CStr() , de szóközt szúr be a pozitív számok elé.

Val() - csak egy számértéket "húz ki" a számok és betűk keverékéből. Ebben az esetben a függvény balról jobbra olvassa az adatokat, és megáll az első nem numerikus értéknél (az egyetlen nem numerikus érték megengedett - egy pont, amely elválasztja az egész részt a tört résztől). Nagyon kényelmes, ha számszerű adatokkal tarkított mértékegységeink vagy pénznemeink vannak.

IsNumeric() és IsDate() - ellenőrizze az értékeket az egyezéshez, hogy ne legyen hiba az átalakítás során. A speciális értékek ellenőrzéséhez használhatja az IsArray() , IsEmpty() ,

IsError(), IsMissing(), IsNull() és IsObject() . Mindezek a függvények visszatérnek

ut Igaz vagy hamis a nekik átadott érték ellenőrzésének eredményétől függően.

Hex() és Oct() – Tizedes adatok konvertálása hexadecimális és oktális értékek karakterlánc-ábrázolásává.

3.9.3. String függvények

Ezek a leggyakrabban használt funkciók. Mindig szükség van rájuk, és nagyon jól kell ismerni őket.

Asc() - ez a funkció lehetővé teszi az átadott karakter numerikus kódjának visszaadását. Például az Asc("D") 68-at ad vissza. Ez a függvény hasznos a következő vagy előző betű meghatározásához. Általában a Chr() függvénnyel együtt használatos, amely a fordított műveletet hajtja végre - egy karaktert ad vissza a numerikus kódja szerint. Például egy ilyen kód az Excelben lehetővé teszi az orosz ábécé betűinek egymás utáni írását A-tól U-ig A1-től A20-ig terjedő cellákba:

Dim n, nCharCode As Integer n = 1

nCharCode = Asc("A") Do Míg n<= 20

ActiveWorkbook.ActiveSheet.Range("A" & n).Érték = Chr(nCharCode)

VBA szintaxis és programozási konstrukciók

nCharCode = nCharCode + 1 hurok

Ennek a függvénynek a változatai az AscB() és az AscW() . Az AscB() csak a numerikus kód első bájtját adja vissza egy karakterhez, míg az AscW() a karakter Unicode kódját adja vissza.

Chr() - egy karaktert numerikus kódjával tér vissza. Azon kívül, hogy az Asc() függvénnyel együtt használjuk (lásd az előző példát), még egy helyzetben nem nélkülözhetjük: amikor ki kell nyomtatni egy szervizkaraktert. Például be kell írnunk a Wordbe a "Gazprom" értéket (idézőjelben). Az idézőjel egy szolgáltatás karakter, és egy olyan karakterlánc használatára tett kísérlet, mint például:

Selection.Text = ""Gazprom""

szintaktikai hibát fog eredményezni. És így lesz minden rendben:

Selection.Text = Chr(34) & Gazprom & Chr(34)

Ennek a függvénynek vannak változatai - ChrB() és ChrW() . Hasonlóan működnek, mint az Asc() függvény ugyanazon opciói.

Az InStr() és az InStrRev() a legnépszerűbb függvények közé tartoznak. Lehetővé teszi egy karaktersorozat észlelését egy karakterláncváltozó törzsében, és visszaadja annak pozícióját. Ha a sorozat nem található, akkor 0. Az InStr() függvény a karakterlánc elejétől, az InStrRev() pedig a végétől keres.

Left() , Right() , Mid() – lehetővé teszi, hogy egy meglévő karakterlánc-változóból megadott számú karaktert vegyen ki balról, jobbról vagy középről.

Len() - a karakterláncban lévő karakterek számát adja vissza (karakterlánc hosszát). Gyakran használják hurkokkal, helyettesítő műveletekkel és hasonlókkal.

Az LCase() és UCase() a karakterláncot kis- és nagybetűvé alakítja. Gyakran használják összehasonlítási érték készítésére, amikor az eset nem fontos (vezetéknevek, cégnevek, városok stb.).

LSet() és RSet() - az egyik változót egy másik szimbólumával tölti ki anélkül, hogy megváltoztatná a hosszát (balra és jobbra). A felesleges karaktereket levágjuk, a hiányzó karaktereket szóközökkel pótoljuk.

LTrim() , RTrim() , Trim() - távolítsa el a szóközöket a bal, a jobb, illetve a bal és a jobb oldalon egyaránt.

Replace() – egy karaktersorozat egyik karaktersorozatát lecseréli egy másikra.

Szóköz() és String() – a megadott számú szóközből vagy karakterből álló karakterláncot adja vissza. Általánosan használt forma-

A VBA-modulok szinte minden programkódját kétféle alprogram (alprogramok) és funkció (függvények) tartalmazza. A Function eljárás fő feladata az, hogy kiszámítson valamilyen értéket, és visszaadja azt a pontot, ahol a függvényeljárást meghívták.

Függvény eljárás-függvény szintaxis:

Funkció FunkcióNév(argumentumok As) As

Function_Name = Visszatérési_érték

végfunkció

A függvényeljárások különféle kifejezésekben használhatók.

1. példa

Például a legegyszerűbb eljárás egy függvényfüggvény:

Függvény F1(x As Currency) As Currency

Az F1(x) függvény további számításokhoz használható (a modul programkódja). A Function típusú eljárás csak akkor hajtható végre, ha egy másik eljárásból hívja meg. Ehhez a hívó eljárásban ennek az F1-nek (x) a nevét kell hozzárendelni valamilyen változóhoz.

2. példa

Például az F1(x) függvény használható a MySub() eljárásban, ha az "y" változónak F1(x) nevet adunk.

Dim y As Single ‘Változó deklaráció y

y = F1 (9) ‘Határozza meg az F1 (x) értéket az x=9 értékhez

Debug.Print y 'Értékek nyomtatása az azonnali ablakban

Funkció F1 (x As Single) As Single

F1 = x^10 ‘X visszatérési értéke 10 hatványára

Itt az F1(x)=$x^(10)$ függvény a $ x=9$ értékhez a $3.486785E+09$ értéket adja vissza a hívó MySub() eljárásnak. Ha egy függvény visszatérési értéke vagy egy VBA-eljárásban használt változó nem rendelkezik deklarált adattípussal, az alapértelmezett adattípus a Variant.

A VBA funkcióeljárásokat és beépített függvényeket is használ.

A beépített függvények két részből állnak: egy névből (azonosító) és argumentumokból. A beépített függvények kész VBA-képletek, amelyek bizonyos műveleteket hajtanak végre a kifejezéseken, és a hívásukkor valamilyen értéket adnak vissza.

A függvények nevük helyett eredményértéket adnak vissza, amelyet a további számítások során használunk. A függvények általában megkövetelik az argumentumok jelenlétét, amelyeket zárójelben, vesszővel elválasztva írunk. Néhány függvény azonban nem igényel argumentumot. Például a Now() függvény, amely nem vesz fel argumentumokat, az aktuális rendszerdátumot és -időt adja vissza. A függvények új kifejezések vagy függvények létrehozására használhatók.

Hogyan lehet függvényt beszúrni a program szövegébe? Ha egy függvényt kifejezésekben szeretne használni, meg kell adnia a nevét egy VBA utasításban. Olyan beépített függvény meghívásához, amely nem igényel argumentumokat, csak írja be a nevét (például Now) a modul programkódjába:

SubMyDate()

Dim TD ‘TD változó deklaráció

TD = Most 'Az aktuális rendszerdátum és idő lekérése

Debug.Print TD ‘Nyomtassa ki az értékeket az azonnali ablakban

Egy vagy több argumentum megadását igénylő függvény meghívásához meg kell adni a nevét a hozzárendelési operátor jobb oldalán a paraméterekkel (argumentumértékekkel) zárójelben. Például a beépített függvénynapló (N) egy N változóval történő meghívásához egy Sub típusú eljárásban, a Log_N változóhoz a Log (50) függvénynév kerül hozzárendelésre 50-es argumentumértékkel.

Al-naturális logaritmus()

Dim LogN ‘LogN változó deklarálása

Debug.Print LogN ‘Értékek nyomtatása az azonnali ablakban

Megjegyzés 1

Itt a Log(N) beépített függvény 50-es argumentumértékhez a 3,91202300542815 értéket adja vissza a "Sub Natural_Logarithm()" hívó eljárás Log(50) hívási pontjához. Egy függvény meghívható különálló VBA-utasítással, vagy úgy, hogy a nevét az argumentum (paraméter) értékek listájával együtt helyezi el egy képletben vagy kifejezésben egy VBA-programban. A VBA gyorsírás függvénybeágyazást használ, amely lehetővé teszi egy függvény hívásának megadását egy másik függvény argumentumaként. Ebben az esetben az első függvény visszatérési értéke a következő függvény argumentumaként szolgál.

A VBA számos beépített funkcióval és eljárással rendelkezik, amelyek megkönnyítik a programozást, amelyek a következő kategóriákra oszthatók:

  • matematikai;
  • típusellenőrzési funkciók;
  • karakterlánc-feldolgozási funkciók;
  • formátum funkció;
  • formátumkonverziós funkciók;
  • dátum és idő funkciókat.

Matematikai függvények

A matematikai függvények közé tartozik:

  • Abs (x) - az $x$ argumentum modulusa;
  • Cos(x) - a $x$ argumentum koszinusza;
  • Exp(x) - a természetes logaritmus alapjának emelése $x$ hatványra;
  • Log(x) - az $x$ argumentum természetes logaritmusa;
  • Rnd - véletlen szám az intervallumból;
  • Sin(x) - a $x$ argumentum szinusza;
  • Sqr(x) - $x$ négyzetgyöke;
  • Atn(x) - $x$ arctangense;
  • Tan(x) – $x$ érintője;
  • Sgn(x) a $x$ jele.

A Fix(x) és az Int(x) egyaránt elveti a szám tört részét, és egész értéket ad vissza. E függvények közötti különbség negatív argumentumértékekre vonatkozik. Az Int(x) a legközelebbi negatív egész számot adja vissza, amely kisebb vagy egyenlő, mint x, míg a Fix(x) a legközelebbi negatív egész számot adja vissza, amely nagyobb vagy egyenlő, mint x.

Típusellenőrző funkciók

Az alábbi függvények határozzák meg a változó típusát:

  • IsArray(x) - a függvény ellenőrzi, hogy a változó tömb-e;
  • Az IsDate(x) meghatározza, hogy a változó dátum-e;
  • Az IsError(x) meghatározza, hogy a változó hibakód-e;
  • IsNull(x) meghatározza, hogy a változó nulla-e;
  • Az IsNumeric(x) meghatározza, hogy egy változó numerikus érték-e;
  • Az IsObject(x) meghatározza, hogy a változó objektum-e.

Formázás funkció

A formázási függvény egy Variant (String) értéket ad vissza, amely a függvény szintaxisának megfelelően formázott kifejezést tartalmaz:

Formátum(kifejezés[,formátum [,a hét első napja[,az év első hete]]]), ahol:

  • Kifejezés - kötelező argumentum (bármely érvényes kifejezés kulcsszavak, operátorok, változók és állandók kombinációja, amelynek eredménye egy karakterlánc, szám vagy objektum);
  • A formátum egy opcionális paraméter (bármilyen érvényes elnevezett vagy felhasználó által meghatározott formátumkifejezés).

Ha a függvény nevéhez hozzáadjuk a $ jelet, akkor a függvény egy String típusú értéket ad vissza, a függvény pedig egy String típusú értéket.

A következő karaktereket használhatja saját számformátumának létrehozásakor:

  • 0 - fenntartja a digitális bit pozícióját. Számjegyet vagy nullát jelenít meg. Ha a formázandó számnak van olyan számjegye azon a bithelyen, ahol a 0 a formázási karakterláncban van, akkor a függvény ezt a számjegyet jeleníti meg, ha nem, akkor nulla jelenik meg azon a helyen;
  • "#" - ennek a szimbólumnak a művelete hasonló a 0 műveletéhez, azzal a különbséggel, hogy a jelentéktelen nullák nem jelennek meg;
  • . – fenntartja a tizedeselválasztó pozícióját, meghatározza, hogy a tizedesvesszőtől balra és jobbra hány számjegyet kell megjeleníteni;
  • % - fenntartja a szám százalékos megjelenítését;
  • . elválasztja a százakat a több ezertől.

Formátumkonverziós függvények

Ezek tartalmazzák:

  • Val(karakterlánc) A karakterláncban található számokat a megfelelő típusú számértékként adja vissza.
  • Str(szám) – Változat (karakterlánc) értéket ad vissza, amely egy szám karakterlánc reprezentációja.

A Val és Str függvényeken kívül számos függvény létezik a kifejezéstípusok átalakítására.

Karakterlánc-feldolgozási függvények

A sok funkció között a következők találhatók:

  • Chr(code) – Az ASCII kódot karakterláncsá alakítja. Például a Chr(10) újsort hajt végre, a Chr(13) pedig a kocsi visszatérését;
  • Mid(karakterlánc, pos[,hossz]) - a megadott számú karaktert tartalmazó karakterlánc egy részkarakterláncát adja vissza, ahol a String egy karakterlánc-kifejezés, amelyből a részkarakterlánc kinyerésre kerül;
  • Pos a karakter pozíciója a karakterláncban String, ahonnan a kívánt részkarakterlánc kezdődik;
  • A hossza a visszaadandó részkarakterek száma;
  • Len(string) A karakterláncban lévő karakterek számát adja vissza.

Idő és dátum funkciók

A Változat értéket adja vissza, amely tartalmazza a rendszerdátumot, az aktuális időt stb.. Például a Dátum függvény a rendszerdátumot tartalmazó értéket ad vissza.

Aritmetikai kifejezések Visual Basic.

Elméleti rész

Kifejezések és függvények

LABORATÓRIUMI MUNKA №4. Aritmetikával való munka

Ellenőrzendő kérdések

1. Milyen összetevők teszik lehetővé statikus képek létrehozását az alkalmazásban?

2. Hogyan lehet képet feltenni az űrlapra? Milyen módszerek léteznek erre a célra, és miben különböznek egymástól?

3. Milyen formátumú képek csatlakozhat az Image komponens az alkalmazáshoz?

4. Az Image objektum melyik tulajdonsága felelős a méretezésért? A kép láthatósága miatt?

Célkitűzés:ismerkedjen meg a Visual Basic nyelv aritmetikai kifejezéseivel és matematikai függvényeivel; megtanuljon alkalmazásokat fejleszteni kifejezések és matematikai függvények segítségével

A kifejezéseket az adatokkal végzett műveletekhez használják. Az adatoktól és a használt műveletektől függően a kifejezések fel vannak osztva aritmetikai, logikai és szimbolikus

Aritmetikai kifejezések számok, konstansok, változók, függvények sorozata, amelyeket aritmetikai műveletek előjelei kapcsolnak össze. Egy kifejezés speciális esete egyszerűen egy konstans, egy változó vagy egy függvényhívás.

A Visual Basic nyelv aritmetikai műveleteit a 4.1. táblázat mutatja be.

4.1. táblázat – A Visual Basic nyelv aritmetikai műveletei

Prioritás műveletek végrehajtása (csökkenő sorrendben): hatványozás, szorzás és osztás, egész osztás, maradék számítás, összeadás és kivonás. A számítások balról jobbra történnek. A zárójelek megváltoztatják a prioritást.

Példák:

14 /5*2 = 5,6 – az azonos prioritású műveletek balról jobbra hajtódnak végre

14\5*2 = 1 - a szorzásnak magasabb a prioritása, és a tört részt el kell hagyni egész osztás során

27^1/3 = 9 - a hatványozásnak van a legmagasabb prioritása

27^(1/3) = 3 - a zárójelek megváltoztatják a műveletek sorrendjét

A Visual Basic széles skáláját kínálja beágyazott (alapértelmezett) függvények, amelyek megkönnyítik a programok írását. Vannak matematikai függvények, karakterlánc-feldolgozó függvények, dátumok és időpontok kezelésére szolgáló függvények, valamint pénzügyi függvények.

Matematikai függvények:

Abs (x) - kiszámítja az argumentum modulusát



Atn (x) - kiszámítja az x szám arctangensét

Sin (x) - kiszámítja az x szám szinuszát

Cos (x) - kiszámítja az x szám koszinuszát

Tan (x) - kiszámítja az x szám érintőjét

Exp (x) - kiszámítja az e^x-et

Log (x) - kiszámítja a természetes logaritmust

Sqr(x) – Kiszámítja a négyzetgyököt

rnd() - 0 és 1 közötti véletlen számot ad vissza

Int(x) – Kiszámítja az x-nél nem nagyobb legnagyobb egész számot

Fix (x) – kerekített számot számol (elveti az argumentum tört részét)

CInt(x) - az argumentumot a matematikai kerekítés szabályai szerint egész számra kerekítve adja vissza

Sgn (x) - egy szám előjelét adja vissza

X^(1/n) - kivonja X n-edik gyökét

Hex (x) – egy decimális számot hexadecimálissá alakít át

Oct(x) - tizedesjegyet oktálissá alakít

Példák a számok kerekítésére:

Int(7,32) = 7 CInt(5,5) = 6 Fix(-7,32) = -7

Int(-7,32) = -8 CInt(-7,5) = -7

A trigonometrikus függvényekben az argumentumértékek radiánban vannak megadva!

Az argumentum fokról radiánra konvertálásához használja a következő képletet:

Argumentum (radiánban) = Argumentum (fokban)*PI / 180

A PI száma a következő képlettel határozható meg:

PI = Atn(1)*4

A beépített funkciókról és azok használatáról a Visual Basic súgórendszerében olvashat részletesebben.

6.1. táblázat. Beépített matematikai függvények
Funkció Leírás
abs Abszolút érték
Atn Arktangens
Kötözősaláta Egy szám koszinusza
Exp Az e (2,718282) számot adja vissza a függvény argumentumának hatványára emelve.
Fix Elveti a szám tört részét, és az egész számot adja vissza. Pozitív számok esetén az eredmény egy számmal kisebb, mint a bemeneti érték (a Fix(2.5) 2-t ad vissza, a negatív számoknál - többet (A Fix(-2.5) -2-t ad vissza)
int Elveti a szám tört részét, és az egész számot adja vissza. Pozitív esetén az eredmény a beírtnál kisebb szám (Int(2.5) 2-t ad vissza), negatív esetén szintén kisebb (Int(-2.5) -3).
Napló visszatér természetes logaritmus számok
Rnd Single típusú véletlenszámot ad vissza, ráadásul ez a szám 0 és 1 között van. A véletlenszám-generátor inicializálásához használja a Randomize direktívát - ezt meg kell hívni a hívás előtt Rnd.
Sgn A függvény egy szám előjelének meghatározására szolgál. Ha a szám pozitív, akkor 1-et ad vissza. Nulla esetén a függvény 0-t, negatív szám esetén -1-et ad vissza.
Bűn Sinus
sqr Négyzetgyök
Cser Tangens

Nézzünk egy példát. Adjunk hozzá egy gombot a Microsoft Word dokumentumhoz, nevezzük el cmd_Calc , jelöljük Calculations néven, és adjuk hozzá a következő kódot (6.1. lista), szemléltetve a vizsgált függvények működését.

Dim dblNumber As Double "Számításokban használt változó Dim varResult "Változat típusa Variant dblNumber = Val(InputBox("Írjon be egy számot")) "Számítsa ki a beírt szám abszolút értékét "Először rendelje hozzá az eredményt a varResult "Next, jelenítse meg az előjeles eredményt az "üzenet" ablakban, használja a "+" jelet a "karakterláncok összefűzéséhez, ellenkező esetben "hívja a függvényeket közvetlenül az MsgBox-ban"e "Ne feledje, hogy a "numerikus értékeket karakterláncokká alakítjuk az Str függvény segítségével varResult = Abs(dblNumber) MsgBox ( "Abszolút érték " + _ Str(dblNumber) + " egyenlő " + Str(varResult)) "Az MsgBox ív érintője ("Arc tangens" + _ Str(dblNumber) + " egyenlő " + _ Str(Atn(dblNumber))) "Az MsgBox koszinusza ("Koszinusz " + _ Str(dblNumber) + " egyenlő " + _ Str(Cos(dblNumber))) "e a beírt szám hatványával MsgBox ("e szám " + _ Str(dblNumber) + " egyenlő " + _ Str(Exp(dblNumber))) "Funkciójavítás MsgBox ("Funkció eredménye Függvényjavítás a következőhöz: " + _ Str(dblNumber) + " egyenlő " + _ Str(Fix(dblNumber))) "Function Int MsgBox ("Az Int függvény eredménye a következőhöz: " + _ Str(dblNumber) + " egyenlő " + _ Str( Int(dblNumber))) "Természetes logaritmus MsgBox ("Természetes logaritmus " + _ Str(dblNumber) + " egyenlő " + _ Str(Log(dblNumber))) "Véletlenszerű számok beszerzése "első szám - 0-tól 1-ig "second - from 0 to 10. "Third - from 25 to 100 "Negyedik - integer 0-34 Randomize MsgBox ("Véletlen számok csoportja: " + _ Str(Rnd()) + ", " + _ Str(Rnd () * 10) + ", " + _ Str(Rnd() * 75 + 25) + ", " + _ Str(Int(Rnd() * 34))) "Sgn függvény MsgBox ("Sgn eredmény a következőre: " + _ Str (dblNumber) + " egyenlő " + _ Str(Sgn(dblNumber))) "Az MsgBox szinusza ("Szinusz" + _ Str(dblNumber) + " egyenlő " + _ Str(Sin(dblNumber))) "Négygyök of MsgBox (" A négyzetgyök " + _ Str(dblNumber) + " egyenlő " + _ Str(Sqr(dblNumber))) "Tangenciális MsgBox ("Tangenciális" + _ Str(dblNumber) + " egyenlő " + _ S tr(Tan(dblSzám))) Felsorolás 6.1. Kattintson a cmd_Calc gomb eseménykezelőjére

Ügyeljen arra az algoritmusra, amellyel a függvény segítségével egy bizonyos tartományba eső véletlen számot kaphat Rnd. Tegyük fel, hogy egy véletlen számot kell kapnunk 15 és 40 között. Kezdésként vegyünk egy számot 0 és 40 között. Nyilván ehhez egy ilyen hívásra van szükségünk: Rnd()*40.

Ha a kifejezés által visszaadott legkisebb véletlen szám szintjét 15-re szeretné "emelni", tegye a következőket.

Először is számoljuk ki a 40 és 15 közötti különbséget – 25-öt kapunk. Tehát egy 0 és 25 közötti véletlen szám megadásához használhatja a hívást Rnd()*25.

Másodszor, adjunk hozzá 15-öt a kapott véletlenszámhoz. Most a 15-től 40-ig terjedő véletlen számok kiszámításának kifejezése így néz ki: Rnd()*25+15.

Ellenőrizzük ennek az állításnak a helyességét. Funkció Rnd ismert, hogy 0 és 1 közötti véletlen számokat ad vissza. Ha a függvény 0-t ad vissza, akkor a kifejezés eredménye 15 (0*25+15) lesz. Ha a függvény 1-et ad vissza, az eredmény 40 (25*1+15) lesz. Köztes értékek Rnd megadja a kívánt véletlen számokat 15 és 40 között.

A cmd_Len gombkattintás kezelője (6.2. lista) a következő feladat megoldását tartalmazza: mondja meg a felhasználónak a beírt szöveg hosszát. Nyilvánvalóan a probléma megoldásához szükségünk van a Len függvényre.

"Változó a bemeneti karakterlánc tárolására Dim str_InpStr As String "A karakterlánc talált hosszának tárolására szolgáló változó Dim lng_StrLen As Long str_InpStr = InputBox("Enter string") "A karakterlánc hosszának kiszámítása lng_StrLen = Len(str_InpoxStr () Msg A bemeneti karakterlánc hossza: _" + _ str_InpStr + "_ egyenlő: " + Str(lng_StrLen) + _ " karakter") Felsorolás 6.2. Példa a Len funkció használatára

ábrán. 6.2. láthatja a karakterlánc hosszának kiszámításának eredményét.


Rizs. 6.2.

Most foglalkozzunk a karakterkonverzióval – az LCase és UCase függvényekkel (6. 3. lista).

"Változó a bemeneti karakterlánc tárolására Dim str_InpStr As String "Változó a módosított karakterlánc tárolására Dim str_NewStr As String str_InpStr = InputBox("Írja be a szöveget") "Az str_NewStr-ben lesz az a beviteli karakterlánc, amelyben minden nagybetűt kisbetűvel helyettesítenek str_NewStr = LCase(str_InpStr) MsgBox ("Módosított karakterlánc: " + str_NewStr) "Most az str_NewStr-nek ugyanaz a karakterlánca lesz, amelyben minden betű nagybetűre változott str_NewStr = UCase(str_InpStr) MsgBox ("Módosított karakterlánc: " + str_NewStr) Felsorolás 6.3. Példa az LCase és UCase függvények használatára

A sorban a karaktercsupaszítás következik - a Mid , LTrim , Rtrim , Left , Right függvények (Lista 6.4 .) Ezek közül a Mid a legerősebb - ennek használatával sok mindent megtehetsz a karakterláncokkal.

"Változó a bemeneti karakterlánc tárolására Dim str_InpStr As String "Változó a vágott karakterek tárolására Dim str_NewStr As String "Állítsunk be egy karakterláncot, amellyel kényelmes lesz dolgozni str_InpStr = " Hello, Alexander " végződjön a "_" karakterrel sorrendben hogy "jobban lássa a szóközök jelenlétét" vagy hiányát MsgBox ("A következő karakterlánccal dolgozunk: " + _ "_" + str_InpStr + "_") "LTrim - a munka eredményének hozzárendelése "változóhoz és információ megjelenítése in MsgBox str_NewStr = LTrim(str_InpStr) MsgBox ("LTrim eredménye: " + _ "_" + str_NewStr + "_") "RTrim MsgBox ("RTrim eredménye: " + _ "_" + RTrim(str_InpStr) + " _" ) "Trim MsgBox ("Vágás művelet eredménye: " + _ "_" + Trim(str_InpStr) + "_") "Balra - vágjon ki 12 karaktert a str_InpStr "sztringből, miután "megtisztította" a vezető szóközöktől str_NewStr = Left(LTrim (str_InpStr), 12) MsgBox ("Az első 12 karakter balról: " + _ str_NewStr) "Jobbra - hasonlóan Vágjon ki 9 karaktert jobbról str_NewStr = Right(RTrim(str_InpStr), 9) MsgBox ("Első 9 karakter jobbról: " + _ str_NewStr) "Funkció Közép - először egy karaktert nyomtat a másodikból és a string tizenötödik pozíciója, amelyet korábban megtisztított a felesleges szóközöktől "az elején és a végén str_NewStr = Mid(Trim(str_InpStr), 2, 1) MsgBox ("A bemeneti karakterlánc második karaktere: " + _ str_NewStr) str_NewStr = Mid(Trim(str_InpStr), 15, 1) MsgBox ("A bemeneti karakterlánc tizenötödik karaktere: " + _ str_NewStr) "5 karaktert ad ki a 15. karaktertől kezdve str_NewStr = Mid(Trim(str_InpStr), 15, 5) MsgBox ("A karakterlánc öt karaktere a 15. pozícióból: " + _ str_NewStr) Felsorolás 6.4. Példa a függvények használatára karakterek kivágására

Most nézzünk példákat a függvények működésére.

A VBA-modulok szinte minden programkódját kétféle alprogram (alprogramok) és funkció (függvények) tartalmazza. A Function eljárás fő feladata az, hogy kiszámítson valamilyen értéket, és visszaadja azt a pontot, ahol a függvényeljárást meghívták.

Függvény eljárás-függvény szintaxis:

Funkció FunkcióNév(argumentumok As) As

Function_Name = Visszatérési_érték

végfunkció

A függvényeljárások különféle kifejezésekben használhatók.

1. példa

Például a legegyszerűbb eljárás egy függvényfüggvény:

Függvény F1(x As Currency) As Currency

Az F1(x) függvény további számításokhoz használható (a modul programkódja). A Function típusú eljárás csak akkor hajtható végre, ha egy másik eljárásból hívja meg. Ehhez a hívó eljárásban ennek az F1-nek (x) a nevét kell hozzárendelni valamilyen változóhoz.

2. példa

Például az F1(x) függvény használható a MySub() eljárásban, ha az "y" változónak F1(x) nevet adunk.

Dim y As Single ‘Változó deklaráció y

y = F1 (9) ‘Határozza meg az F1 (x) értéket az x=9 értékhez

Debug.Print y 'Értékek nyomtatása az azonnali ablakban

Funkció F1 (x As Single) As Single

F1 = x^10 ‘X visszatérési értéke 10 hatványára

Itt az F1(x)=$x^(10)$ függvény a $ x=9$ értékhez a $3.486785E+09$ értéket adja vissza a hívó MySub() eljárásnak. Ha egy függvény visszatérési értéke vagy egy VBA-eljárásban használt változó nem rendelkezik deklarált adattípussal, az alapértelmezett adattípus a Variant.

A VBA funkcióeljárásokat és beépített függvényeket is használ.

A beépített függvények két részből állnak: egy névből (azonosító) és argumentumokból. A beépített függvények kész VBA-képletek, amelyek bizonyos műveleteket hajtanak végre a kifejezéseken, és a hívásukkor valamilyen értéket adnak vissza.

A függvények nevük helyett eredményértéket adnak vissza, amelyet a további számítások során használunk. A függvények általában megkövetelik az argumentumok jelenlétét, amelyeket zárójelben, vesszővel elválasztva írunk. Néhány függvény azonban nem igényel argumentumot. Például a Now() függvény, amely nem vesz fel argumentumokat, az aktuális rendszerdátumot és -időt adja vissza. A függvények új kifejezések vagy függvények létrehozására használhatók.

Hogyan lehet függvényt beszúrni a program szövegébe? Ha egy függvényt kifejezésekben szeretne használni, meg kell adnia a nevét egy VBA utasításban. Olyan beépített függvény meghívásához, amely nem igényel argumentumokat, csak írja be a nevét (például Now) a modul programkódjába:

SubMyDate()

Dim TD ‘TD változó deklaráció

TD = Most 'Az aktuális rendszerdátum és idő lekérése

Debug.Print TD ‘Nyomtassa ki az értékeket az azonnali ablakban

Egy vagy több argumentum megadását igénylő függvény meghívásához meg kell adni a nevét a hozzárendelési operátor jobb oldalán a paraméterekkel (argumentumértékekkel) zárójelben. Például a beépített függvénynapló (N) egy N változóval történő meghívásához egy Sub típusú eljárásban, a Log_N változóhoz a Log (50) függvénynév kerül hozzárendelésre 50-es argumentumértékkel.

Al-naturális logaritmus()

Dim LogN ‘LogN változó deklarálása

Debug.Print LogN ‘Értékek nyomtatása az azonnali ablakban

Megjegyzés 1

Itt a Log(N) beépített függvény 50-es argumentumértékhez a 3,91202300542815 értéket adja vissza a "Sub Natural_Logarithm()" hívó eljárás Log(50) hívási pontjához. Egy függvény meghívható különálló VBA-utasítással, vagy úgy, hogy a nevét az argumentum (paraméter) értékek listájával együtt helyezi el egy képletben vagy kifejezésben egy VBA-programban. A VBA gyorsírás függvénybeágyazást használ, amely lehetővé teszi egy függvény hívásának megadását egy másik függvény argumentumaként. Ebben az esetben az első függvény visszatérési értéke a következő függvény argumentumaként szolgál.

A VBA számos beépített funkcióval és eljárással rendelkezik, amelyek megkönnyítik a programozást, amelyek a következő kategóriákra oszthatók:

  • matematikai;
  • típusellenőrzési funkciók;
  • karakterlánc-feldolgozási funkciók;
  • formátum funkció;
  • formátumkonverziós funkciók;
  • dátum és idő funkciókat.

Matematikai függvények

A matematikai függvények közé tartozik:

  • Abs (x) - az $x$ argumentum modulusa;
  • Cos(x) - a $x$ argumentum koszinusza;
  • Exp(x) - a természetes logaritmus alapjának emelése $x$ hatványra;
  • Log(x) - az $x$ argumentum természetes logaritmusa;
  • Rnd - véletlen szám az intervallumból;
  • Sin(x) - a $x$ argumentum szinusza;
  • Sqr(x) - $x$ négyzetgyöke;
  • Atn(x) - $x$ arctangense;
  • Tan(x) – $x$ érintője;
  • Sgn(x) a $x$ jele.

A Fix(x) és az Int(x) egyaránt elveti a szám tört részét, és egész értéket ad vissza. E függvények közötti különbség negatív argumentumértékekre vonatkozik. Az Int(x) a legközelebbi negatív egész számot adja vissza, amely kisebb vagy egyenlő, mint x, míg a Fix(x) a legközelebbi negatív egész számot adja vissza, amely nagyobb vagy egyenlő, mint x.

Típusellenőrző funkciók

Az alábbi függvények határozzák meg a változó típusát:

  • IsArray(x) - a függvény ellenőrzi, hogy a változó tömb-e;
  • Az IsDate(x) meghatározza, hogy a változó dátum-e;
  • Az IsError(x) meghatározza, hogy a változó hibakód-e;
  • IsNull(x) meghatározza, hogy a változó nulla-e;
  • Az IsNumeric(x) meghatározza, hogy egy változó numerikus érték-e;
  • Az IsObject(x) meghatározza, hogy a változó objektum-e.

Formázás funkció

A formázási függvény egy Variant (String) értéket ad vissza, amely a függvény szintaxisának megfelelően formázott kifejezést tartalmaz:

Formátum(kifejezés[,formátum [,a hét első napja[,az év első hete]]]), ahol:

  • Kifejezés - kötelező argumentum (bármely érvényes kifejezés kulcsszavak, operátorok, változók és állandók kombinációja, amelynek eredménye egy karakterlánc, szám vagy objektum);
  • A formátum egy opcionális paraméter (bármilyen érvényes elnevezett vagy felhasználó által meghatározott formátumkifejezés).

Ha a függvény nevéhez hozzáadjuk a $ jelet, akkor a függvény egy String típusú értéket ad vissza, a függvény pedig egy String típusú értéket.

A következő karaktereket használhatja saját számformátumának létrehozásakor:

  • 0 - fenntartja a digitális bit pozícióját. Számjegyet vagy nullát jelenít meg. Ha a formázandó számnak van olyan számjegye azon a bithelyen, ahol a 0 a formázási karakterláncban van, akkor a függvény ezt a számjegyet jeleníti meg, ha nem, akkor nulla jelenik meg azon a helyen;
  • "#" - ennek a szimbólumnak a művelete hasonló a 0 műveletéhez, azzal a különbséggel, hogy a jelentéktelen nullák nem jelennek meg;
  • . – fenntartja a tizedeselválasztó pozícióját, meghatározza, hogy a tizedesvesszőtől balra és jobbra hány számjegyet kell megjeleníteni;
  • % - fenntartja a szám százalékos megjelenítését;
  • . elválasztja a százakat a több ezertől.

Formátumkonverziós függvények

Ezek tartalmazzák:

  • Val(karakterlánc) A karakterláncban található számokat a megfelelő típusú számértékként adja vissza.
  • Str(szám) – Változat (karakterlánc) értéket ad vissza, amely egy szám karakterlánc reprezentációja.

A Val és Str függvényeken kívül számos függvény létezik a kifejezéstípusok átalakítására.

Karakterlánc-feldolgozási függvények

A sok funkció között a következők találhatók:

  • Chr(code) – Az ASCII kódot karakterláncsá alakítja. Például a Chr(10) újsort hajt végre, a Chr(13) pedig a kocsi visszatérését;
  • Mid(karakterlánc, pos[,hossz]) - a megadott számú karaktert tartalmazó karakterlánc egy részkarakterláncát adja vissza, ahol a String egy karakterlánc-kifejezés, amelyből a részkarakterlánc kinyerésre kerül;
  • Pos a karakter pozíciója a karakterláncban String, ahonnan a kívánt részkarakterlánc kezdődik;
  • A hossza a visszaadandó részkarakterek száma;
  • Len(string) A karakterláncban lévő karakterek számát adja vissza.

Idő és dátum funkciók

A Változat értéket adja vissza, amely tartalmazza a rendszerdátumot, az aktuális időt stb.. Például a Dátum függvény a rendszerdátumot tartalmazó értéket ad vissza.