Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2009, 15:01   #1
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию Сумма прописью нужна. Для Казахстана, что-бы писала тенге, тиины.

Сумма прописью нужна.
Именно для Казахстана, что-бы писала тенге, тиины.
Кто поделится?
kzld вне форума Ответить с цитированием
Старый 04.08.2009, 15:22   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Все в архиве. AddMsOff.dll скопировать в system32
Вложения
Тип файла: rar Пропись.rar (24.4 Кб, 302 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.08.2009, 16:10   #3
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Все в архиве. AddMsOff.dll скопировать в system32
Большое спасибо
kzld вне форума Ответить с цитированием
Старый 05.08.2009, 07:03   #4
user7789
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 65
По умолчанию

Цитата:
Сообщение от kzld Посмотреть сообщение
Большое спасибо
есть макрос, пишет в долл,евро, тг. нужен?
user7789 вне форума Ответить с цитированием
Старый 05.08.2009, 11:13   #5
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от user7789 Посмотреть сообщение
есть макрос, пишет в долл,евро, тг. нужен?
Нужен. Для коллекции, а если ещё и в тенге !!!!!!!!!
kzld вне форума Ответить с цитированием
Старый 05.08.2009, 11:49   #6
user7789
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 65
По умолчанию

Код:
Public Function NumTranslateRus(Refer As Range, CHR_1 As Boolean, WordFOR_1 As String, WordFOR_2_3_4 As String, WordFOR5 As String, _
 Optional WrdFOR_1 As String, Optional WrdFOR_2_3_4 As String, Optional WrdFOR5 As String) As String

Dim Word(3, 9) As String
Dim Wrd(9) As String * 12
Dim stroka, Strich As String
Dim volume, number  As Double
Dim L_nu, L_num As Integer
Dim slov, sl_v1, strMsg As String
Dim prov As Boolean


'Заполнение массива
Word(1, 1) = "од": Word(2, 1) = "десять": Word(3, 1) = "сто"
Word(1, 2) = "дв": Word(2, 2) = "двадцать": Word(3, 2) = "двести"
Word(1, 3) = "три": Word(2, 3) = "тридцать": Word(3, 3) = "триста"
Word(1, 4) = "четыре": Word(2, 4) = "сорок": Word(3, 4) = "четыреста"
Word(1, 5) = "пять": Word(2, 5) = "пятьдесят": Word(3, 5) = "пятьсот"
Word(1, 6) = "шесть": Word(2, 6) = "шестьдесят": Word(3, 6) = "шестьсот"
Word(1, 7) = "семь": Word(2, 7) = "семьдесят": Word(3, 7) = "семьсот"
Word(1, 8) = "восемь": Word(2, 8) = "восемьдесят": Word(3, 8) = "восемьсот"
Word(1, 9) = "девять": Word(2, 9) = "девяносто": Word(3, 9) = "девятьсот"

Wrd(1) = "одиннадцать"
Wrd(2) = "двенадцать"
Wrd(3) = "тринадцать"
Wrd(4) = "четырнадцать"
Wrd(5) = "пятнадцать"
Wrd(6) = "шестнадцать"
Wrd(7) = "семнадцать"
Wrd(8) = "восемнадцать"
Wrd(9) = "девятнадцать"

On Error GoTo errorlabel
prov = True
stroca = ""

volume = Refer.Value

If volume >= 1000000000 Then
   MsgBox "Больше 999999999 перевести не могу", 64, "Внимание"
   Exit Function
 Else
    volume = Abs(volume)
    volume = Format(volume, "########0.00")
    drob = (Format((volume - Int(volume)), "0.00") * 100)
    number = Int(volume)
    prov = False
    
    L_nu = Val(Right(Str(number), 2))
    L_num = Val(Right(Str(number), 1))
    
    If L_nu > 10 And L_nu < 20 And number > 0 Then
     slov = " " + WordFOR5
    Else
     Select Case L_num
      Case 1
       slov = "ин " + WordFOR_1
      Case 2
       slov = "а " + WordFOR_2_3_4
      Case 3, 4
       slov = " " + WordFOR_2_3_4
      Case Else
       slov = " " + WordFOR5
     End Select
     If number = 0 Then slov = ""
    End If
    L_nu = Val(Right(Str(drob), 2))
    L_num = Val(Right(Str(drob), 1))
    
    If L_nu > 10 And L_nu < 20 Then
       sl_v1 = WrdFOR5
    Else
    Select Case L_num
     Case "1"
      sl_v1 = WrdFOR_1
     Case "2", "3", "4"
      sl_v1 = WrdFOR_2_3_4
     Case Else
      sl_v1 = WrdFOR5
    End Select
   End If
 End If
'*******************
Chislo = Str(number)
    GoSub Work3:
    
    Chislo = Str(Int(number / 1000))
    If Chislo >= 1 And Chislo - Int(Chislo / 1000) * 1000 <> 0 Then
        
        L_nu = Val(Right(Str(Chislo), 2))
        L_num = Val(Right(Str(Chislo), 1))
    If L_nu > 10 And L_nu < 20 Then
       Strich = "тысяч"
    Else
    Select Case L_num
     Case "1"
      Strich = "на тысяча"
     Case "2"
      Strich = "е тысячи"
     Case "3", "4"
      Strich = " тысячи"
     Case Else
      Strich = " тысяч"
    End Select
   End If
 
    stroca = Strich + stroca
    GoSub Work3:
    End If
'------------------------------

    Chislo = Str(Int(number / 1000000))
    If Chislo >= 1 Then
        L_nu = Val(Right(Str(Chislo), 2))
    L_num = Val(Right(Str(Chislo), 1))
    
        If L_nu > 10 And L_nu < 20 Then
            Strich = " миллионов"
         Else
            Select Case L_num
             Case "1"
             Strich = "ин миллион"
            Case "2"
            Strich = "а миллиона"
            Case "3", "4"
            Strich = " миллиона"
            Case Else
           Strich = " миллионов"
         End Select
        End If
     
    stroca = Strich + stroca
    GoSub Work3:
    End If

   
   stroca = stroca + slov + " " + IIf(drob < 9, "0" + Trim(Str(drob)), Str(drob)) + " " + sl_v1
If CHR_1 Then
        Dim kl_s As String
        Dim dl_s As Integer
        dl_s = Len(Trim(stroca))
        kl_s = Mid(Trim(stroca), 1, 1)
       stroca = UCase(kl_s) + Mid(Trim(stroca), 2, dl_s)
     Else
    End If
    NumTranslateRus = stroca
Exit Function
Work3: ' подрограмма обработки троек чисел
'*****************
For i = 1 To 3
    L_nu = Val(Right(Chislo, 2))
    L_num = Val(Left(Right(Chislo, i), 1))
 If L_nu > 10 And L_nu < 20 And i = 1 Then
     stroca = " " + Wrd(L_num) + stroca
     i = 2
      GoTo jump:
  Else
     stroca = " " + Word(i, L_num) + stroca
     
 End If
jump:
Next i: Return
'******************

errorlabel:
 If prov Then
    strMsg = "В данную ячейку необходимо записать число" & Chr(13)
    strMsg = strMsg & " Например 1234,23 , исправте запись и запустите" & Chr(13)
    strMsg = strMsg & " сначала"
    MsgBox strMsg, 64, " Ошибка"
 Else
    strMsg = "Возникла ошибка: " & Err.Description & Chr(13)
    strMsg = strMsg & " номер: " & Err.number
    MsgBox strMsg, 64, " Ошибка"
  
 End If
End Function
user7789 вне форума Ответить с цитированием
Старый 05.08.2009, 11:52   #7
user7789
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 65
По умолчанию

потом:
Код:
=IF(M5="USD"; NumTranslateRus(M21;1;"доллар";"доллара";"долларов";"цент";"цента";"центов");  IF(M5="EUR"; NumTranslateRus(M21;1;"евро";"евро";"евро";"цент";"цента";"центов");  NumTranslateRus(M21;1;"тенге";"тенге";"тенге";"тиын";"тиын";"тиын")))
где ячейка M5 - валюта (USD. eur. KZT)
user7789 вне форума Ответить с цитированием
Старый 05.08.2009, 12:02   #8
user7789
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 65
По умолчанию

in an English.
Код:
Main Function
Function SpellNumber(ByVal MyNumber, CCY As String)
    Dim Dollars, Cents, Temp
    Dim DecimalPlace, Count
    Dim Curr, Curr2, Currpl, Curr2pl
    Dim stroca As String
    Dim kl_s As String
    Dim dl_s As Integer
    ReDim Place(9) As String
    Place(2) = " thousand "
    Place(3) = " million "
    Place(4) = " billion "
    Place(5) = " trillion "
    ' String representation of amount.
    MyNumber = Trim(Str(MyNumber))
    Select Case CCY
        Case "USD"
            Curr = "dollar"
            Currpl = "dollars"
            Curr2 = "cent"
            Curr2pl = "cents"
        Case "EUR"
            Curr = "euro"
            Currpl = "euro"
            Curr2 = "cent"
            Curr2pl = "cents"
        Case "KZT"
            Curr = "tenge"
            Currpl = "tenge"
            Curr2 = "tiyn"
            Curr2pl = "tiyn"
    End Select
    ' Position of decimal place 0 if none.
    DecimalPlace = InStr(MyNumber, ".")
    ' Convert cents and set MyNumber to dollar amount.
    If DecimalPlace > 0 Then
        Cents = Left(Mid(MyNumber, DecimalPlace + 1) & _
                  "00", 2)
        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If
    Count = 1
    Do While MyNumber <> ""
        Temp = GetHundreds(Right(MyNumber, 3))
        If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
        If Len(MyNumber) > 3 Then
            MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
            MyNumber = ""
        End If
        Count = Count + 1
    Loop
    Select Case Dollars
        Case ""
            Dollars = ""
        Case "one"
            Dollars = "one " & Curr
         Case Else
            Dollars = Dollars & " " & Currpl
    End Select
    Select Case Cents
        Case ""
            Cents = " and 00 " & Curr2pl
        Case "one"
            Cents = " and one " & Curr2
              Case Else
            Cents = " and " & Cents & " " & Curr2pl
    End Select
    stroca = Dollars & Cents
    dl_s = Len(Trim(stroca))
    kl_s = Mid(Trim(stroca), 1, 1)
    stroca = UCase(kl_s) + Mid(Trim(stroca), 2, dl_s)
    SpellNumber = stroca
End Function
      
' Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
    Dim Result As String
    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)
    ' Convert the hundreds place.
    If Mid(MyNumber, 1, 1) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 1, 1)) & " hundred "
    End If
    ' Convert the tens and ones place.
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & GetTens(Mid(MyNumber, 2))
    Else
        Result = Result & GetDigit(Mid(MyNumber, 3))
    End If
    GetHundreds = Result
End Function
      
' Converts a number from 10 to 99 into text.
Function GetTens(TensText)
    Dim Result As String
    Result = ""           ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19...
        Select Case Val(TensText)
            Case 10: Result = "ten"
            Case 11: Result = "eleven"
            Case 12: Result = "twelve"
            Case 13: Result = "thirteen"
            Case 14: Result = "fourteen"
            Case 15: Result = "fifteen"
            Case 16: Result = "sixteen"
            Case 17: Result = "seventeen"
            Case 18: Result = "eighteen"
            Case 19: Result = "nineteen"
            Case Else
        End Select
    Else                                 ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
            Case 2: Result = "twenty "
            Case 3: Result = "thirty "
            Case 4: Result = "forty "
            Case 5: Result = "fifty "
            Case 6: Result = "sixty "
            Case 7: Result = "seventy "
            Case 8: Result = "eighty "
            Case 9: Result = "ninety "
            Case Else
        End Select
        Result = Result & GetDigit _
            (Right(TensText, 1))  ' Retrieve ones place.
    End If
    GetTens = Result
End Function
     
' Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
    Select Case Val(Digit)
        Case 1: GetDigit = "one"
        Case 2: GetDigit = "two"
        Case 3: GetDigit = "three"
        Case 4: GetDigit = "four"
        Case 5: GetDigit = "five"
        Case 6: GetDigit = "six"
        Case 7: GetDigit = "seven"
        Case 8: GetDigit = "eight"
        Case 9: GetDigit = "nine"
        Case Else: GetDigit = ""
    End Select
End Function
user7789 вне форума Ответить с цитированием
Старый 30.10.2009, 09:07   #9
stas77
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 83
По умолчанию

Что то не выходит, вс скопировал! Нажал на инстал.файл! Все удачно вроде! НО НЕ ПОЯВЛЯЕТСЯ У МЕНЯ ПРОПИСЬ В КОМАНДАХ, ЕСТЬ ТОЛЬКО ПРОПИСН
Как сделать все правильно?
Хочу бухгалтеру на комп эту фишку поставить!
stas77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма прописью Averess Microsoft Office Excel 1 13.02.2009 11:13
Сумма прописью LX Da Mad Microsoft Office Excel 5 27.06.2008 01:54
MS Office 2007 Excel сумма прописью VinipuX Microsoft Office Excel 9 25.01.2008 17:52
Сумма прописью в 1С Aleksandr Свободное общение 2 27.08.2007 15:59
Сумма прописью Fainder Microsoft Office Excel 6 17.03.2007 10:43