функції для

І прийдуть вони серед чоловіків і покажуть чуда великі від землі і до краю небес і спокусяться в ті часи уми багато і впадуть в спокусу.

Якщо ви працювали з Excel. значить ви працювали з формулами. VBA дозволяє не тільки ефективно використовувати ці формули в своїх програмах, а й самим створювати подібні творіння.

Ви можете відкрити вже готовий приклад:

Для створення Користувальницької функції, необхідно створити порожній макрос (створити Модуль), куди дописати наступний тип програми Function:

Increase = Number * 1000 + 12

Public Function (це команда VBA на створення функції) Increase (назва функції яка буде обчислювати) (Number) (назва змінної, яка буде брати участь в обчисленнях)

Increase = (ми говоримо VBA. Що функція з назвою Increase буде обчислюватися так:) Number * 1000 + 12 (задана раніше змінна Number примножиться і додасться: * 1000 + 12)

End Function (всі розрахунки завершені)

Необхідно вставити цей програмний код в Модуль.

Тепер, ми виділяємо клітинку і вставляємо туди формулу Increase (працюємо як зі звичайними формулами Excel) з розділу Певні користувачем.

функції для

Далі проставляем задані змінні:

функції для

І отримуємо результат, як при роботі зі стандартними формулами (різниця лише в швидкості обчислень - у VBA швидкість значно менше, але помітно це тільки при ємних розрахунках).

Варто окремо зупинитися на функції SimpleSum:

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

For Each cell In list

SimpleSum = SimpleSum + cell

Public Function SimpleSum (назва функції) (ParamArray list () (задає нескінченний запит на змінні list) As Variant) As Double (оператори присвоєння - не розглядаються в методичке)

For Each cell In list (ми говоримо VBA. Що для кожного осередку в списку змінних list виконується наступний розрахунок :)

SimpleSum = SimpleSum + cell (функція SimpleSum = до кожного підсумку SimpleSum додається осередок cell. Яка як ви напевно пам'ятаєте, визначає кожну змінну в списку list. Тобто до підсумку додаються нові змінні, поки вони не закінчаться.) І тепер спробуйте сказати , що програмувати в VBA просто :)))

Next cell (ми завершуємо пошук всіх змінних cell)

End Function (всі розрахунки завершені)

В останньому прикладі функції SimpleSumInc, ми додали постійну зміну Constanta і множимо кожну вибрану комірку для суми на цю змінну. Постарайтеся самі вникнути в суть програми.

На жаль, призначені для користувача функції будуть працювати тільки в файлі, де вони прописані. Для нових файлів, їх доведеться переносити новим макросом.

Якщо необхідно постійно користуватися певною функцією - її можна прописати в PERSONAL. XLS. але майте на увазі - працювати вона буде тільки на вашому комп'ютері.

Додається функція дозволяє числові фінансові значення писати російськими словами.

Приклад: 144917-99 як сто сорок чотири тисячі дев'ятсот сімнадцять рублів дев'яносто дев'ять копійок

Дуже зручна дрібничка:

Function СуммаПропісью (pNUM As Variant) 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 As Integer


L100 (0) = ""
L100 (1) = "сто"
L100 (2) = "двісті"
L100 (3) = "триста"
L100 (4) = "чотириста"
L100 (5) = "п'ятсот"
L100 (6) = "шістсот"
L100 (7) = "сімсот"
L100 (8) = "вісімсот"
L100 (9) = "дев'ятсот"

L10 (0) = ""
L10 (1) = ""
L10 (2) = "двадцять"
L10 (3) = "тридцять"
L10 (4) = "сорок"
L10 (5) = "п'ятдесят"
L10 (6) = "шістдесят"
L10 (7) = "сімдесят"
L10 (8) = "вісімдесят"
L10 (9) = "дев'яносто"

L1 (0) = ""
L1 (1) = "один"
L1 (2) = "два"
L1 (3) = "три"
L1 (4) = "чотири"
L1 (5) = "п'ять"
L1 (6) = "шість"
L1 (7) = "сім"
L1 (8) = "вісім"
L1 (9) = "дев'ять"
L1 (10) = "десять"
L1 (11) = "одинадцять"
L1 (12) = "дванадцять"
L1 (13) = "тринадцять"
L1 (14) = "чотирнадцять"
L1 (15) = "п'ятнадцять"
L1 (16) = "шістнадцять"
L1 (17) = "сімнадцять"
L1 (18) = "вісімнадцять"
L1 (19) = "дев'ятнадцять"
L1 (20) = "двадцять"
L1 (21) = "одна"
L1 (22) = "дві"

SYM (1, 0) = "мільярд" 'для 01
SYM (1, 1) = "мільйон"
SYM (1, 2) = "тисяча"
SYM (1, 3) = "рубль"
SYM (1, 4) = "копійка"

SYM (2, 0) = "мільярди" 'для 02,03,04
SYM (2, 1) = "мільйони"
SYM (2, 2) = "тисячі"
SYM (2, 3) = "рубля"
SYM (2, 4) = "копійки"

SYM (3, 0) = "мільярдів" 'для всіх інших
SYM (3, 1) = "мільйонів"
SYM (3, 2) = "тисяч"
SYM (3, 3) = "рублів"
SYM (3, 4) = "копійок"

If Val (pNUM) <= 0 Or Val(pNUM)> 1000000000000 # Then
MsgBox ( "Сума повинна бути більше нуля і менше одного трильйона рублів!")
СуммаПропісью = "Помилка оператора!"
Exit Function
End If

'Виділення копійок
j = Len (pNUM)
For i = 1 To j
w = Mid (pNUM, i, 1)
If (w = "-") Or (w = "=") Or (w = ",") Then w = "."
L = L + w
Next i


DIG (4) = (vNUM - Fix (vNUM)) * 100
'Виділення руб, тис, мільйонів і мільярдів
For i = 3 To 0 Step -1
vNUM = Fix (vNUM) / 1000
DIG (i) = (vNUM - Fix (vNUM)) * 1000
Next i


'Заповнення символьного поля
For i = 0 To 4
n1 = 0
x = DIG (i)
n100 = Fix (x / 100)
n10 = x - n100 * 100
n1 = n10 - Fix (n10 / 10) * 10
LETTERS = LETTERS + L100 (n100) 'сотні
If n10 <= 20 Then
If (i = 2 Or i = 4) And (n10 = 1 Or n10 = 2) Then n10 = n10 + 20 'Якщо тисяча або копійка то в жіночий рід
LETTERS = LETTERS + L1 (n10) 'одиниці до 20
Else '> 20
x = n10
n10 = Fix (n10 / 10)
n1 = x - n10 * 10
LETTERS = LETTERS + L10 (n10)
If (i = 2 Or i = 4) And (n1 = 1 Or n1 = 2) Then
LETTERS = LETTERS + L1 (n1 + 20) 'Якщо тисяча або копійка то в жіночий рід
Else
LETTERS = LETTERS + L1 (n1) 'одиниці до 20
End If
End If
'Заповнення найменувань
If i = 4 Then
n1 = DIG (4) - Fix (DIG (4) / 10) * 10 'для копійок
End If
Select Case n1
Case 0
j = 0
Case 1
j = 1
Case 2
j = 2
Case 3
j = 2
Case 4
j = 2
Case Else
j = 3
End Select
If n10 - n1 = 10 Then j = 3
If (n10> 0 Or n100> 0) And j = 0 Then j = 3
LETTERS = LETTERS + SYM (j, i)

If i = 3 And DIG (3) = 0 Then LETTERS = LETTERS + "рублів"

Next i
'Перша буква - заголовна
LETTERS = Trim (Chr (Asc (Left (LETTERS, 1)) - 32) + Mid (LETTERS, 2))
СуммаПропісью = LETTERS

Схожі статті