egyedi funkciók

És bemennek az emberek között, és megmutatja nagy csodákat a föld, és a végén az ég, és megsértődött akkoriban a fejében a sok, kísértésbe essen.

Ha már dolgozott az Excel. akkor dolgozunk képleteket. VBA lehetővé teszi nem csak hatékony felhasználása ezeket a képleteket a programokban, hanem arra, hogy olyan alkotásokat.

Meg tudja nyitni a kész példa:

Segítségével a felhasználó által definiált függvények, akkor létre kell hozni egy üres makró (egy modul létrehozásához), ahol helyezni a következő program típusa Funkció:

Növelése = száma * 1000 + 12

Public Function (VBA, hogy létrehozzon egy csapat funkció) növelése (függvény nevét, amely kiszámítja) (szám) (a változó nevét, amelyeket használni fognak a számításokban)

Növekedés = (azt mondjuk, hogy a VBA funkció elemzi növekedés lesz számítva :.) száma * 1000 + 12 (az előzőekben meghatározott változó száma szorozva és hozzá: * 1000 + 12)

End Function (összes számítás befejeződött)

Be kell beilleszteni ezt a kódot a modult.

Most jelöljünk ki egy cellát, és illessze be növelése képlet (munka, mint a normál Excel képletek) a section Felhasználó által definiált.

egyedi funkciók

Következő lepecsételt definiált változók:

egyedi funkciók

És azt az eredményt kapjuk, mint ahogy azt a standard képletek (az egyetlen különbség a sebesség számítás - a VBA sebessége sokkal kisebb, de ez csak észrevehető, ha tágas számítások).

Azt is meg kellene megállni SimpleSum funkciók:

Public Function SimpleSum (ParamArray list () As Variant) As Double

Mindegyik cellához listája

SimpleSum = SimpleSum + sejtek

Public Function SimpleSum (függvény neve) (ParamArray list () (végtelen halmazok keresett változók listája) As Variant) As Double (értékadó operátor - nem tekinthető a képzési kézikönyvben)

Mindegyik cellához lista (beszélünk VBA. Ez a minden sejt a változó list végrehajtjuk következő számítási :)

SimpleSum = SimpleSum + sejt (függvény SimpleSum = teljes minden sejt SimpleSum adunk sejt. Ami, mint talán emlékeznek, meghatározza az egyes változók a listán listán. Azaz a teljes hozzáadott új változók, amíg elfogy.) Most próbálja mondani hogy a programozás a VBA csak :)))

Következő sejt (mi teljes keresést összes sejt változó)

End Function (összes számítás befejeződött)

Az utolsó példában SimpleSumInc funkciót, akkor hozzá egy állandó változó Constanta és szaporodnak minden egyes kiválasztott sejt mennyiségének ez a változó. Próbáld meg magad megérteni a lényegét a programot.

Sajnos, az egyedi funkció csak akkor működik a fájlban, ahol regisztrálták őket. Az új fájlokat, akkor kell elviselniük egy új makrót.

Ha mindig egy adott funkció - lehet előírt személyes. XLS. de ne feledje - ez csak akkor működik a számítógépen.

A mellékelt pénzügyi funkció lehetővé teszi, hogy a numerikus értékeket kell írni az orosz szavakat.

Példa: 144917-99 hogyan Száz 44.917 rubelt, és kilencvenkilenc cent

Nagyon hasznos kis dolog:

Funkció SummaPropisyu (pNUM Amint variáns) As String

Dim vNUM As Double
Dim LETTERS, L, W As String
Dim L100 (9) As String
Dim L10 (9) As String
Dim L1 (22) As String
Dim SYM (3, 4) As String
Dim DIG (4) As Integer
Dim NUMRUB, i, j, x, N100, N10, N1 Integer


L100 (0) = ""
L100 (1) = "száz"
L100 (2) = "száz"
L100 (3) = "száz"
L100 (4) = "négy"
L100 (5) = "száz"
L100 (6) = "száz"
L100 (7) = "száz"
L100 (8) = "nyolc"
L100 (9) = "kilenc"

L10 (0) = ""
L10 (1) = ""
L10 (2) = "húsz"
L10 (3) = "harminc"
L10 (4) = "negyven"
L10 (5) = "ötven"
L10 (6) = "hatvan"
L10 (7) = "hetven"
L10 (8) = "Nyolcvan"
L10 (9) = "kilencven"

L1 (0) = ""
L1 (1) = "egységes"
L1 (2) = "két"
L1 (3) = "három"
L1 (4) = "négy"
L1 (5) = "öt"
L1 (6) = "hat"
L1 (7) = "Seven"
L1 (8) = "nyolc"
L1 (9) = "kilenc"
L1 (10) = "tíz"
L1 (11) = "tizenegy"
L1 (12) = "tizenkét"
L1 (13) = "tizenhárom"
L1 (14) = "tizennégy"
L1 (15) = "tizenöt"
L1 (16) = "tizenhat"
L1 (17) = "tizenhét"
L1 (18) = "tizennyolc"
L1 (19) = "tizenkilenc"
L1 (20) = "húsz"
L1 (21) = "egységes"
L1 (22) = "két"

SYM (1, 0) = "milliárd" „, hogy 01
SYM (1, 1) = "millió"
SYM (1, 2) = "ezer"
SYM (1, 3) = "RUB"
SYM (1, 4) = "penny"

SYM (2, 0) = "milliárd" „a 02,03,04
SYM (2, 1) = "millió"
SYM (2, 2) = "ezer"
SYM (2, 3) = "RUB"
SYM (2, 4) = "penny"

SYM (3, 0) = "milliárd" „minden más
SYM (3, 1) = "milliók"
SYM (3, 2) = "ezer"
SYM (3, 3) = "RUR"
SYM (3, 4) = "cent"

Ha Val (pNUM) <= 0 Or Val(pNUM)> 1000000000000 # Ezután
MsgBox ( „Az összeg nagyobb, mint nulla és kisebb, mint egy billió rubelt!”)
SummaPropisyu = "operátor hiba!"
Exit Function
End If

„Isolation cent
J = Len (pNUM)
I = 1 j
w = Mid (pNUM, i, 1)
Ha (w = "-") vagy (w = "="), vagy (w = " "), akkor w ="".
L = L + W
Következő i


DIG (4) = (vNUM - Fix (vNUM)) * 100
„Kiosztása rubel ezer, millió vagy milliárd
I = 0 és 3 lépés -1
vNUM = Fix (vNUM) / 1000
DIG (i) = (vNUM - Fix (vNUM)) * 1000
Következő i


„Kitöltése a karakter területén
I = 0 és 4
n1 = 0
X = DIG (i)
N100 = Fix (x / 100)
N10 = x - N100 * 100
n1 = N10 - Fix (N10 / 10) * 10
LETTERS = betű + L100 (N100) „száz
Ha n10 <= 20 Then
Ha (i = 2 vagy i = 4) és (n10 = 1 Or n10 = 2) Ezután n10 = n10 + 20, ha ezer vagy penny nőies
LETTERS = betű + L1 (N10) „, hogy 20 egység
Else „> 20
X = N10
N10 = Fix (N10 / 10)
n1 = x - N10 * 10
LETTERS = betű + L10 (N10)
Ha (i = 2 vagy i = 4) és (n1 = 1 vagy N1 = 2), majd
LETTERS = betű + L1 (n1 + 20) „Ha ezer vagy fillért nőies
más
LETTERS = betű + L1 (N1) „hogy 20 egység
End If
End If
„Kitöltése tárgyak
Ha i = 4 Akkor
n1 = DIG (4) - Fix (DIG (4) / 10) * 10 „cent
End If
Select Case n1
Case 0
j = 0
1. eset
j = 1
2. eset
J = 2
3. eset
J = 2
4. eset
J = 2
Case Else
j = 3
End Select
Ha N10 - n1 = 10, akkor J = 3
Ha (N10> 0 vagy n100> 0) és J = 0 Then j = 3
LETTERS = betű + SYM (j, i)

Ha i = 3 és DIG (3) = 0, akkor LETTERS = betű + "RUB"

Következő i
„Az első betű - cím
LETTERS = trim (Chr (Asc (Bal (betűk, 1)) - 32) + Mid (betű, 2))
SummaPropisyu = LETTERS

Kapcsolódó cikkek