Posts Tagged ‘hit’

Макрос для написания числа прописью

Четверг, Июнь 18th, 2009

Коллега увидел оформление мною командировочных расходов и очень сильно захотел получить такой вот замечательный код, так сказать hit (hits) сезона. Честно говоря я его давным давно вытащил откуда-то из Интернета и не помню какой добрый человек его написал и выложил, знал бы разместил бы ссылку на его сайт. Но коли бесплатно его в свое время получил, то бесплатно и выкладываю для скачивания (одним файлом можно его скачать тут - Скрип для перевода в рубли прописью) Идея довольно простая - есть число, необходимо представить его прописью и добавить слово рублей. С копейками мне работать не приходится, поэтому ставится всегда “00 коп.”, если кого-то не устраивает - дорабатывайте, на свой вкус.

Прикручивается он к Excel довольно просто и на то как это сделать есть масса описаний в Интернете, поэтому размещаю сам текст (еще раз спасибо неизвестному доброму человеку за его написание):

Attribute VB_Name = “Module1″
Function propis(SourceDigits As Currency) As String
Dim STRNG As String, CHAR, Result As String, Prom As String
Dim i, STRNG_len As Long
Dim SourceDigTail As Currency

SourceDigTail = (SourceDigits - Int(SourceDigits)) * 100
SourceDigits = Int(SourceDigits)

STRNG = SourceDigits
STRNG_len = Len(STRNG)
For i = 1 To 9 - STRNG_len Step 1
STRNG = “0″ & STRNG
Next i

For i = 9 To 9 - STRNG_len + 1 Step -1
CHAR = Mid(STRNG, i, 1)
If CHAR = “” Then GoTo end_c

If i = 2 Or i = 5 Or i = 8 Then
If CHAR = “1″ Then
CHAR = Mid(STRNG, i, 2)
Select Case CHAR
Case “10″
Prom = “десять ”
Case “11″
Prom = “одиннадцать ”
Case “12″
Prom = “двенадцать ”
Case “13″
Prom = “тринадцать ”
Case “14″
Prom = “четырнадцать ”
Case “15″
Prom = “пятнадцать ”
Case “16″
Prom = “шестнадцать ”
Case “17″
Prom = “семьнадцать ”
Case “18″
Prom = “восемьнадцать ”
Case “19″
Prom = “девятнадцать ”
End Select
Else  ‘ If char Not = 1
Select Case CHAR
Case “0″
Prom = “”
Case “2″
Prom = “двадцать ”
Case “3″
Prom = “тридцать ”
Case “4″
Prom = “сорок ”
Case “5″
Prom = “пятьдесят ”
Case “6″
Prom = “шестьдесят ”
Case “7″
Prom = “семьдесят ”
Case “8″
Prom = “восемьдесят ”
Case “9″
Prom = “девяносто ”
End Select
End If
End If
If i = 1 Or i = 4 Or i = 7 Then
Select Case CHAR
Case “0″
Prom = “”
Case “1″
Prom = “сто ”
Case “2″
Prom = “двести ”
Case “3″
Prom = “триста ”
Case “4″
Prom = “четыреста ”
Case “5″
Prom = “пятьсот ”
Case “6″
Prom = “шестьсот ”
Case “7″
Prom = “семьсот ”
Case “8″
Prom = “восемьсот ”
Case “9″
Prom = “девятьсот ”
End Select
End If

If i = 3 Or i = 6 Or i = 9 Then

If i = 9 And Mid(STRNG, i - 1, 1) = “1″ Then
Result = “рублей ” & Result
GoTo end_c
End If

If i = 3 And Mid(STRNG, i - 1, 1) = “1″ Then
Result = “миллионов ” & Result
GoTo end_c
End If

If i = 6 And Mid(STRNG, i - 1, 1) = “1″ Then
Result = “тысяч ” & Result
GoTo end_c
End If

Select Case CHAR
Case “0″
Prom = “”
Case “1″
If i = 6 Then
Prom = “одна ”
Else
Prom = “один ”
End If
Case “2″
If i = 6 Then
Prom = “две ”
Else
Prom = “два ”
End If
Case “3″
Prom = “три ”
Case “4″
Prom = “четыре ”
Case “5″
Prom = “пять ”
Case “6″
Prom = “шесть ”
Case “7″
Prom = “семь ”
Case “8″
Prom = “восемь ”
Case “9″
Prom = “девять ”
End Select
End If
Select Case i

Case 3
Select Case CHAR
Case “1″
Result = “миллион ” & Result
Case “2″, “3″, “4″
Result = “миллиона ” & Result
Case “5″, “6″, “7″, “8″, “9″
Result = “миллионов ” & Result
Case “0″
If STRNG_len > 6 Then
Result = “миллионов ” & Result
End If
End Select

Case 6
Select Case CHAR
Case “1″
Result = “тысячa ” & Result
Case “2″, “3″, “4″
Result = “тысячи ” & Result
Case “5″, “6″, “7″, “8″, “9″
Result = “тысяч ” & Result
Case “0″
If STRNG_len > 3 Then
Result = “тысяч ” & Result
End If
End Select

Case 9
Select Case CHAR
Case “1″
Result = “рубль ” & Result
Case “2″, “3″, “4″
Result = “рубля ” & Result
Case “0″, “5″, “6″, “7″, “8″, “9″
Result = “рублей ” & Result
End Select
End Select

Result = Prom & Result

end_c:
Next i

Result = Format(Mid(Result, 1, 1), “>”) & Mid(Result, 2)

propis = Result & Format(SourceDigTail, “00″) & ” коп.”

End Function

Вот и весь макрос. Если кто-то желает что-то написать на эту тему - пишите вот по этому адресу: mail@key-vip.com
А вот тут похожее обсуждение, того же макроса http://www.liveinternet.ru/users/lyuciena/post39732232/

Если будут силы, чуть позже выложу Excel файл, в котором это применяется при заполнении командировки и написании авансового отчета. А может вообще отдельный ТОП (TOP)  ик организую. “В помощь EXEL истам”

Всегда Ваш.


Page 1 of 11