Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Транслитерация / 5 сообщений из 5, страница 1 из 1
22.01.2009, 12:49
    #35771624
Транслитерация
Добрый день, подскажите, пожалуйста, я нашла такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Function Translit(myNum)
iRussian$ = "абвгд.............."
iTranslit = Array("", "a", "b", "v", "g", "d", _
"e", "jo", "zh", "z", "i", "ó", "k", "l", "m", _
"n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", _
"ch", "sh", "sch", "''", "'y", "'", "ye", "yu", "ya")

For iCount% =  1  To  33 

iValue$ = Replace(iValue$, Mid(iRussian$, iCount%,  1 ), _
iTranslit(iCount%), , , vbTextCompare) 'MS Excel 2000
Next
Translit = StrConv(iValue$, vbProperCase) 'Ivan Taranov
End Function

в итоге я хочу вставлять в ячейку эту функцию (C2=Translit(C2)) и получать транслитерацию.
но моя ф-ция не работает. помогите, пожалуйста.
...
Рейтинг: 0 / 0
22.01.2009, 13:31
    #35771715
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транслитерация
Может можно проще.

Код: plaintext
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.
Public Function Translit(rng As Excel.Range) As String
    Dim intI As Integer
    Dim iCount As Integer
    Dim iTranslit() As Variant
    Dim iRussian As String
    Dim strTemp As String
    Dim strTemp2 As String
    
    iRussian = "абвгдеёжзи"
    iTranslit = Array("", "a", "b", "v", "g", "d", _
    "e", "jo", "zh", "z", "i", "o", "k", "l", "m", _
    "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", _
    "ch", "sh", "sch", "''", "'y", "'", "ye", "yu", "ya")

    For intI =  1  To Len(rng)
        For iCount =  1  To  33 
            strTemp = Replace(Mid(rng, intI,  1 ), Mid(iRussian, iCount,  1 ), _
              iTranslit(iCount), , , vbTextCompare)
            
            If Mid(rng, intI,  1 ) <> strTemp Or Mid(rng, intI,  1 ) = " " Or _
              Mid(rng, intI,  1 ) = "-" Then
                strTemp2 = strTemp2 & strTemp
                Exit For
            End If
        Next iCount
    Next intI
    
    Translit = strTemp2
End Function

Ячейка A1 -"где-же где жде".
Ячейка A2 - "=Translit(A1)" - "gde-zhe gde zhde".

Кстати, в списке замен, ошибка. После "i" идет "o".

Код: plaintext
1.
2.
3.
    iTranslit = Array("", "a", "b", "v", "g", "d", _
    "e", "jo", "zh", "z", "i", "o", "k", "l", "m", _
    "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", _
    "ch", "sh", "sch", "''", "'y", "'", "ye", "yu", "ya")
...
Рейтинг: 0 / 0
22.01.2009, 14:02
    #35771786
Транслитерация
Ashton, спасибо вам большое :)
только я теперь не разберусь.. в ячейке B3=Приходченко
ячейка D3 = =Translit(B3) = rsitspeshyeolp

может, я со списком замен напутала?


Код: plaintext
1.
2.
iRussian = "абвгдеєжзиіїйклмнопрстуфхцчшщюя"
    iTranslit = Array("a", "b", "v", "g", "d", "e", "ye", "zh", "z", "y", "i", "yi", "y", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "sch", "yu", "ya")
...
Рейтинг: 0 / 0
22.01.2009, 14:12
    #35771806
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транслитерация
Так, все ок.

Код: plaintext
1.
2.
3.
4.
5.
    iRussian = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"

    iTranslit = Array("", "a", "b", "v", "g", "d", _
    "e", "jo", "zh", "z", "i", "i", "k", "l", "m", _
    "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", _
    "ch", "sh", "sch", "''", "'y", "'", "ye", "yu", "ya")

Код: plaintext
prikhodchenko
...
Рейтинг: 0 / 0
22.01.2009, 14:46
    #35771898
Транслитерация
Спасибо Вам огромное, Ashton, все получилось и все работает :)
научиться бы так самой программировать :)!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Транслитерация / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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