Funcții personalizate

Ei vor veni printre oameni și vor arăta minuni mari de pe pământ și până la marginile cerului, iar mulți vor fi ispitiți în acele vremuri și vor cădea în ispită.

Dacă ați lucrat cu Excel. așa că ai lucrat cu formule. VBA vă permite nu numai să utilizați în mod eficient aceste formule în programele dvs., ci și să vă creați astfel de creații.







Puteți deschide un exemplu gata:

Pentru a crea funcții definite de utilizator, trebuie să creați un gol macro (pentru a crea un modul), în cazul în care să adăugați următorul tip de program de funcții:

Creștere = Număr * 1000 + 12

Funcția publică (aceasta este comanda VBA pentru a crea o funcție) Creșteți (numele funcției care va evalua) (Număr) (numele variabilei care va participa la calcule)

Creștere = (noi spunem că funcția VBA numită Increase va fi calculat ca :.) Număr * 1000 + 12 (număr variabil definit anterior înmulțit și adaugă: * 1000 + 12)

End Function (toate calculele sunt complete)

Trebuie să introduceți acest cod în Modul.

Acum, selectăm celula și inserăm formula Creștere (lucrăm cu formulele obișnuite Excel) din secțiunea Definită de utilizator.

Funcții personalizate

Apoi am pus variabilele date:

Funcții personalizate

Și rezultatul obținut, ca și când lucrăm cu formule standard (diferența este doar în viteza de calcul - în VBA viteza este mult mai mică, dar se poate observa doar cu calcule capacitive).

Merită să se țină cont de funcția SimpleSum:

Funcția publică SimpleSum (lista ParamArray () ca variantă) Ca dublă

Pentru fiecare celulă din listă

SimpleSum = SimpleSum + celulă

Funcția publică SimpleSum (numele funcției) (lista ParamArray () (lista seturi infinit variabile de interogare) Ca variantă) Ca dublă (operatori de atribuire - nu sunt luate în considerare în manualul de instruire)

Pentru fiecare celulă din listă (îi spunem VBA că pentru fiecare celulă din lista de variabile listă se face următorul calcul :)

SimpleSum = SimpleSum + celule (funcția SimpleSum = total pentru fiecare celulă SimpleSum adăugat celule. Care, după cum probabil vă amintiți, definește fiecare variabilă din lista de listă. Ie din totalul adăugat noi variabile până când a alerga afară.) Acum, încercați să spun , că programarea în VBA este simplă :)))

Celula următoare (terminăm căutarea tuturor variabilelor celulare)

End Function (toate calculele sunt complete)

În ultimul exemplu al funcției SimpleSumInc, am adăugat o variabilă constantă Constanta și înmulțim fiecare celulă selectată pentru suma cu această variabilă. Încercați să ajungeți la inima programului.







Din păcate, funcțiile definite de utilizator vor funcționa numai în fișierul în care sunt înregistrate. Pentru fișierele noi, acestea vor trebui să fie transferate cu o nouă macrocomandă.

Dacă trebuie să utilizați în mod constant o anumită funcție - poate fi prescrisă în PERSONAL. XLS. dar aveți în minte - va funcționa numai pe computerul dvs.

Funcția atașată permite scrierea valorilor financiare numerice în cuvintele ruse.

Exemplu: 144917-99 ca O sută patruzeci și patru de mii nouă sute șaptesprezece ruble nouăzeci și nouă de copeici

Lucruri foarte bune:

Suma funcției (pNUM ca varianta) ca șir

Dim vNUM Ca dublu
Dim LETTERS, L, w ca șir
Dim L100 (9) ca șir
Dim L10 (9) ca șir
Dim L1 (22) Ca șir
Dim SYM (3, 4) ca șir
Dim DIG (4) Ca Integer
Dim NUMRUB, i, j, x, n100, n10, n1 Ca integer


L100 (0) = ""
L100 (1) = "o sută"
L100 (2) = "două sute"
L100 (3) = "trei sute"
L100 (4) = "patru sute"
L100 (5) = "cinci sute"
L100 (6) = "șase sute"
L100 (7) = "șapte sute"
L100 (8) = "opt sute"
L100 (9) = "nouă sute"

L10 (0) = ""
L10 (1) = ""
L10 (2) = "douăzeci"
L10 (3) = "treizeci"
L10 (4) = "patruzeci"
L10 (5) = "cincizeci"
L10 (6) = "șaizeci"
L10 (7) = "șaptezeci"
L10 (8) = "optzeci"
L10 (9) = "nouăzeci"

L1 (0) = ""
L1 (1) = "unu"
L1 (2) = "doi"
L1 (3) = "trei"
L1 (4) = "patru"
L1 (5) = "cinci"
L1 (6) = "șase"
L1 (7) = "șapte"
L1 (8) = "opt"
L1 (9) = "nouă"
L1 (10) = "zece"
L1 (11) = "unsprezece"
L1 (12) = "doisprezece"
L1 (13) = "treisprezece"
L1 (14) = "paisprezece"
L1 (15) = "cincisprezece"
L1 (16) = "șaisprezece"
L1 (17) = "șaptesprezece"
L1 (18) = "optsprezece"
L1 (19) = "nouăsprezece"
L1 (20) = "douăzeci"
L1 (21) = "unu"
L1 (22) = "doi"

SYM (1, 0) = "miliarde" pentru 01
SYM (1, 1) = "milioane"
SYM (1, 2) = "o mie"
SYM (1, 3) = "ruble"
SYM (1, 4) = "penny"

SYM (2, 0) = "miliarde" pentru 02.03.03
SYM (2, 1) = "milioane"
SYM (2, 2) = "mii"
SYM (2, 3) = "ruble"
SYM (2, 4) = "banii"

SYM (3, 0) = "miliarde" pentru toate celelalte
SYM (3, 1) = "milioane"
SYM (3, 2) = "mii"
SYM (3, 3) = "ruble"
SYM (3, 4) = "copeici"

Dacă Val (pNUM) <= 0 Or Val(pNUM)> 1000000000000 # Apoi
MsgBox ("Suma trebuie să fie mai mare decât zero și mai mică de un trilion de ruble!")
Suma scrisă = "Eroare operator!"
Ieșire Funcție
Sfârșit Dacă

"Alocarea de cenți
j = Len (pNUM)
Pentru i = 1 Pentru j
w = Mid (pNUM, i, 1)
Dacă (w = "-") Sau (w = "=") Sau (w = ",")
L = L + w
Înainte i


DIG (4) = (vNUM - Fix (vNUM)) * 100
"Alocarea rublelor, mii, milioane și miliarde
Pentru i = 3 Pentru 0 Pasul -1
vNUM = Fix (vNUM) / 1000
DIG (i) = (vNUM - Fix (vNUM)) * 1000
Înainte i


'Completarea câmpului de caractere
Pentru i = 0 până la 4
n1 = 0
x = DIG (i)
n100 = Fix (x / 100)
n10 = x - n100 * 100
n1 = n10 - Fix (n10 / 10) * 10
LITERE = LITERE + L100 (n100) 'sute
Dacă n10 <= 20 Then
Dacă (i = 2 sau i = 4) și (n10 = 1 Sau n10 = 2) Apoi n10 = n10 + 20 „în cazul în care o mie sau penny în feminin
SCRISOARE = ​​LITERE + L1 (n10) 'la 20
Altfel '> 20
x = n10
n10 = Fix (n10 / 10)
n1 = x - n10 * 10
LITERE = LITERE + L10 (n10)
Dacă (i = 2 sau i = 4) Și (n1 = 1 sau n1 = 2) Apoi
LITERE = LITERE + L1 (n1 + 20) "Dacă o mie sau un bănuț este în sexul feminin
altfel
SCRISOARE = ​​LITERE + L1 (n1) 'la 20
Sfârșit Dacă
Sfârșit Dacă
"completarea titlurilor
Dacă i = 4 Apoi
n1 = DIG (4) - Fix (DIG (4) / 10) * 10 'pentru copeici
Sfârșit Dacă
Selectați Cazul n1
Cauza 0
j = 0
Cazul 1
j = 1
Cazul 2
j = 2
Cazul 3
j = 2
Cazul 4
j = 2
Alt caz
j = 3
Sfârșit Selectați
Dacă n10 - n1 = 10 Atunci j = 3
Dacă (n10> 0 sau n100> 0) Și j = 0 Atunci j = 3
LITERE = LITERE + SYM (j, i)

Dacă i = 3 și DIG (3) = 0 atunci LETTERS = LETTERS + "ruble"

Înainte i
"Prima literă - majusculă
LETTERS = Trim (Chr (Asc (Stânga (LETTERS, 1)) - 32) + Mid (LETTERS, 2))
Suma scrisă = LITERE







Articole similare

Trimiteți-le prietenilor: