Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Convert VBA to JavaScript / 6 сообщений из 6, страница 1 из 1
13.11.2013, 09:01
    #38462971
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Convert VBA to JavaScript
Добрый день, всем!
Уважаемые кто нибудь может перевести этот макрос на JavaScript или помочь сделат функцию сумма прописью, что бы сумму выводило на этом языке, макрос не мой нашел в инете, хотелось бы перевести на JavaScript, чтобы использовать в Asp.Net, пожалуйста переведите этот макрос...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Option Explicit
Function SumPropTajik(n As Double) As String
Dim ed, des, sot, ten, razr
Dim i As Integer, somoni As String, diram As String, str As String, s As String

ed = Array("", "ÿê ", "äó ", "ñå ", "÷îð ", "ïàí÷ ", "øàø ", "õàôò ", "õàøò ", "íóõ ")
ten = Array("äàõ ", "¸çäàõ ", "äóâîçäàõ ", "ñåíçäàõ ", "÷îðäàõ ", "ïîíçäàõ ", "øîíçäàõ ", "õàáäàõ ", "õàæäàõ ", "íóçäàõ ")
des = Array("", "", "áèñò", "ñè", "÷èë", "ïàí÷îõ", "øàñò", "õàôòîä", "õàøòîä", "íàâàä")
sot = Array("", "ÿêñàä", "äóñàä", "ñåñàä", "÷îðñàä", "ïàí÷ñàä", "øàøñàä", "õàôòñàä", "õàøòñàä", "íóõñàä")
razr = Array("", "õàçîð", "ìèëëèîí", "ìèëëèàðä")

If n >= 1000000000000# Or n < 0 Then SumPropTajik = CVErr(xlErrValue): Exit Function
If Round(n, 2) < 1 Then
    str = "&#241;&#232;&#244;&#240; "
Else
    somoni = Left(Format(n, "000000000000.00"), 12)
    For i = 0 To 3
        s = Mid(somoni, i * 3 + 1, 3)
        str = str & sot(CInt(Left(s, 1))) & IIf(Left(s, 1) = "0", "", IIf(Right(s, 2) = "00", " ", "&#243; "))
        If Mid(s, 2, 1) = "1" Then
            str = str & ten(CInt(Right(s, 1)))
        Else
            str = str & des(CInt(Mid(s, 2, 1)))
            str = str & IIf(CInt(Mid(s, 2, 1)) > 1 And Right(s, 1) <> "0", "&#243; ", IIf(CInt(Mid(s, 2, 1)), " ", ""))
            str = str & ed(CInt(Right(s, 1)))
        End If
        If s <> "000" And i < 3 Then str = str & razr(3 - i) & IIf(CDbl(Mid(somoni, i * 3 + 4)) > 0, "&#243; ", " ")
    Next i
End If
diram = Right(Format(n, "0.00"), 2)
str = Replace(Replace(str, "&#241;&#232;&#243; ", "&#241;&#232;&#226;&#243; "), "&#255;&#234;&#241;&#224;&#228; ", "&#241;&#224;&#228; ") & "&#241;&#238;&#236;&#238;&#237;&#232;" & IIf(diram <> "00", " " & diram & " &#228;&#232;&#240;&#224;&#236;", "")
SumPropTajik = UCase(Left(str, 1)) & Mid(str, 2)
End Function


Заранее спасибо!
...
Рейтинг: 0 / 0
13.11.2013, 09:35
    #38463000
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Convert VBA to JavaScript
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Function SumPropTajik(n As Double) As String
Dim ed, des, sot, ten, razr
Dim i As Integer, somoni As String, diram As String, str As String, s As String

ed = Array("", "yak ", "du ", "se ", "chor ", "panj ", "shash ", "haft ", "hasht ", "nuh ")
ten = Array("dah ", "yozdah ", "duvozdah ", "senzdah ", "chordah ", "ponzdah ", "shonzdah ", "habdah ", "hajdah ", "nuzdah ")
des = Array("", "", "bist", "ci", "chil", "panjoh", "shast", "haftod", "hashtod", "navad")
sot = Array("", "yaksad", "dusad", "sesad", "chorsad", "panjsad", "shashsad", "haftsad", "hashtsad", "nuhsad")
razr = Array("", "hazor", "milion", "miliard")

If n >= 1000000000000# Or n < 0 Then SumPropTajik = CVErr(xlErrValue): Exit Function
If Round(n, 2) < 1 Then
    str = "sifr "
Else
    somoni = Left(Format(n, "000000000000.00"), 12)
    For i = 0 To 3
        s = Mid(somoni, i * 3 + 1, 3)
        str = str & sot(CInt(Left(s, 1))) & IIf(Left(s, 1) = "0", "", IIf(Right(s, 2) = "00", " ", "u "))
        If Mid(s, 2, 1) = "1" Then
            str = str & ten(CInt(Right(s, 1)))
        Else
            str = str & des(CInt(Mid(s, 2, 1)))
            str = str & IIf(CInt(Mid(s, 2, 1)) > 1 And Right(s, 1) <> "0", "u ", IIf(CInt(Mid(s, 2, 1)), " ", ""))
            str = str & ed(CInt(Right(s, 1)))
        End If
        If s <> "000" And i < 3 Then str = str & razr(3 - i) & IIf(CDbl(Mid(somoni, i * 3 + 4)) > 0, "u ", " ")
    Next i
End If
diram = Right(Format(n, "0.00"), 2)
str = Replace(Replace(str, "siu ", "sivu "), "yaksad ", "sad ") & "psmoni" & IIf(diram <> "00", " " & diram & " psdiram", "")
SumPropTajik = UCase(Left(str, 1)) & Mid(str, 2)
End Function
...
Рейтинг: 0 / 0
13.11.2013, 10:11
    #38463037
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Convert VBA to JavaScript
может быстрее будет спросить готовый?
...
Рейтинг: 0 / 0
13.11.2013, 10:35
    #38463068
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Convert VBA to JavaScript
Shocker.Pro,

Готовый есть, только не на наш язык)))), на десятки, сотни и т.п. у нас разница есть вот поэтому мучимся...
...
Рейтинг: 0 / 0
14.11.2013, 04:34
    #38464374
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Convert VBA to JavaScript
Joris,
тестируй
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
function(n){
    if ('number' !== typeof n) return 'ERROR: Illegal argument type';    
    if (0. > n || 1e12-.01 < n) return 'ERROR: Illegal argument';
    
    var ed = ['', 'yak ', 'du ', 'se ', 'chor ', 'panj ', 'shash ', 'haft ', 'hasht ', 'nuh '],
        ten = ['dah ', 'yozdah ', 'duvozdah ', 'senzdah ', 'chordah ', 'ponzdah ', 'shonzdah ', 'habdah ', 'hajdah ', 'nuzdah '],
        des = ['', '', 'bist', 'ci', 'chil', 'panjoh', 'shast', 'haftod', 'hashtod', 'navad'],
        sot = ['', 'yaksad', 'dusad', 'sesad', 'chorsad', 'panjsad', 'shashsad', 'haftsad', 'hashtsad', 'nuhsad'],
        razr = ['', 'hazor', 'milion', 'miliard'],
        str;
        
    if ( 1. > n ) {
        str = 'sifr ';
    } else {
        var somoni = ('000000000000' + Math.floor(n)).slice(-12);
        str = '';
        for (var i = 0, ss, s, d, e; i < 4; i++) {
            ss = somoni.substring(i*3, i*3+3); 
            s = parseInt(ss.charAt(0)); d = parseInt(ss.charAt(1)); e = parseInt(ss.charAt(2));
            str += sot[s] + (0 == s ? '' : 0 == d+e ? ' ' : 'u ');
            if ( 1 == d ) str += ten[e];
            else str += des[d] + (1 < d && 0 < e ? 'u ' : d ? ' ' : '') + ed[e];
            if ( 3 > i && '000' != ss ) str += razr[3-i] + (0 < parseInt(somoni.substring(i*3+3)) ? 'u ' : ' ');
        }
    }
    var diram = ('00'+Math.round((n - Math.floor(n))*100)).slice(-2);
    str = str.replace(/siu /g, 'sivu ').replace(/yaksad /g, 'sad') + 'psmoni' + ('00' != diram ? ' ' + diram + ' psdiram' : '');
    return str.substring(0, 1).toUpperCase() + str.substring(1);
}

...
Рейтинг: 0 / 0
14.11.2013, 08:14
    #38464429
Joris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Convert VBA to JavaScript
скукотища,

Спасибо огромное очень выручили.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Convert VBA to JavaScript / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]