powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Cлово с английского должно писаться по русски
25 сообщений из 46, страница 1 из 2
Cлово с английского должно писаться по русски
    #34089529
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как сделать что бы слово с английского писалось по русски. пример: в ячейке А1 - Рetr Ivanov, соответственно в ячейке А2 после исполнения макроса будет - Петр Иванов, и сооотв-но любые варианты имен.
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34089943
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю придётся повозиться. А для начала вот так...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
russA1=""
dlina = Len( A1 )
For i =  1  to dlina
     r = ""
     s = Mid( A1, i,  1  ) 
     Select case True
              case s = "A": r = "А"
              case s = "B": r = "Б"
              case s = "C": r = "С"
              case s = "D": r = "Д"
              ' и так далее
     End Select
     russA1 = russA1 + r
Next
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34091724
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Еще, если не трудно подскажите как сделать что бы всё это дело выполнялось на листе "INFO", и что бы осталось только вставить в модуль. Да, и что делать с такими буквами как "ch, sh"?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34091794
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расширить надо предложенную программу:
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
russA1=""
dlina = Len( A1 )
'Сначала обрабатываем самые "длинные" буквы:
i =  1 
do while i<= dlina
     r = ""
     s = lcase$(Mid$( A1, i,  4  ))
     Select case True
              case s = "ch": r = "ч"
              case s = "sh": r = "ш"
              case s = "zg": r = "ж"
              ' и так далее
     End Select
     'Проверю, малоли буква большая была:
     s = Mid$( A1, i,  4  ) 
     if ucase$(left$(s, 1 ))=left$(s, 1 ) then r=ucase$(r)
     russA1 = russA1 + r
     i=i+ 1 
loop

i =  1 
do while i<= dlina
     r = ""
     s = lcase$(Mid$( A1, i,  4  ))
     Select case True
              case s = "A": r = "А"
              case s = "B": r = "Б"
              case s = "C": r = "С"
              case s = "D": r = "Д"
              ' и так далее
     End Select
     'Проверю, малоли буква большая была:
     s = Mid$( A1, i,  4  ) 
     if ucase$(left$(s, 1 ))=left$(s, 1 ) then r=ucase$(r)
     russA1 = russA1 + r
     i=i+ 1 
loop
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34091811
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёлы-палы, ошибочку допустил
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
russA1=""
dlina = Len( A1 )
'Сначала обрабатываем самые "длинные" буквы:
i =  1 
do while i<= dlina
     r = ""
     s = lcase$(Mid$( A1, i,  2  ))
     Select case True
              case s = "ch": r = "ч"
              case s = "sh": r = "ш"
              case s = "zg": r = "ж"
              ' и так далее
     End Select
     'Проверю, малоли буква большая была:
     s = Mid$( A1, i,  2  ) 
     if ucase$(left$(s, 1 ))=left$(s, 1 ) then r=ucase$(r)
     russA1 = russA1 + r
     i=i+ 1 
loop

i =  1 
do while i<= dlina
     r = ""
     s = lcase$(Mid$( A1, i,  1  ))
     Select case True
              case s = "a": r = "а"
              case s = "b": r = "б"
              case s = "c": r = "ц"
              case s = "d": r = "д"
              ' и так далее
     End Select
     'Проверю, малоли буква большая была:
     s = Mid$( A1, i,  1  ) 
     if ucase$(left$(s, 1 ))=left$(s, 1 ) then r=ucase$(r)
     russA1 = russA1 + r
     i=i+ 1 
loop
вот... вроде, без ошибок теперь... ну в общем, если что не так - отладишь, смысл ты понял, я надеюсь
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34092485
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смысл я понял, спасибо, помогите закончить, не врублюсь как его запустить. Не силен я в программировании. Нужно что бы работал на листе "INFO", я так думаю всё это вставить нужно в модуль, пытаюсь но не получается.
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34094167
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мужики, ну помогите доделать, пол шага осталось. У самого не получается. Ставлю в модуль, он не работает. Напишите если можно полностью. please!
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34095968
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34099145
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34099246
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо, супер!
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34099355
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть не большие проблемки в работе, на пример:
1) "Shatskiy" пишется как "ШСхатский", можно было бы вручную до корректировать, а не получается, всё равно в рабочей ячейке возвращается то как задаёт макрос.
2) Мягкий знак если использовать апостроф ' почему то увеличивается в размере?
3) Да и возможность подкорректировать вручную думаю всегда пригодится.

Пожалуйста, если не трудно, помогите закончить
Заранее благодарен!

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b9 As String
russB9 = ""
b9 = Range("B9").Value
dlina = Len(b9)
'Сначала обрабатываем самые "длинные" буквы:
i =  1 
Do While i <= dlina
     r = ""
     s = LCase$(Mid$(b9, i,  2 ))
     Select Case True
              Case s = "ch": r = "ч"
              Case s = "sh": r = "ш"
              Case s = "zg": r = "ж"
              ' и так далее
     End Select
     'Проверю, малоли буква большая была:
     s = Mid$(b9, i,  2 )
     If UCase$(Left$(s,  1 )) = Left$(s,  1 ) Then r = UCase$(r)
     russB9 = russB9 + r
     i = i +  1 
Loop

i =  1 
Do While i <= dlina
     r = ""
     s = LCase$(Mid$(b9, i,  1 ))
     Select Case True
              Case s = "a": r = "а"
              Case s = "b": r = "б"
              Case s = "c": r = "к"
              Case s = "d": r = "д"
              Case s = "e": r = "е"
              Case s = "f": r = "ф"
              Case s = "g": r = "г"
              Case s = "h": r = "х"
              Case s = "i": r = "и"
              Case s = "j": r = "й"
              Case s = "k": r = "к"
              Case s = "l": r = "л"
              Case s = "m": r = "м"
              Case s = "n": r = "н"
              Case s = "o": r = "о"
              Case s = "p": r = "п"
              Case s = "q": r = "к"
              Case s = "r": r = "р"
              Case s = "s": r = "с"
              Case s = "t": r = "т"
              Case s = "u": r = "у"
              Case s = "v": r = "в"
              Case s = "w": r = "в"
              Case s = "x": r = "д"
              Case s = "y": r = "й"
              Case s = "'": r = "д"
              Case s = " ": r = " "
     End Select
     'Проверю, малоли буква большая была:
     s = Mid$(b9, i,  1 )
     If UCase$(Left$(s,  1 )) = Left$(s,  1 ) Then r = UCase$(r)
     russB9 = russB9 + r
     i = i +  1 
Loop
Range("d9").Value = russB9
End Sub
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34100466
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34100962
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, с кнопкой идея не плохая спасибо, но другая проблема остается:
"Shatskiy" пишется как "ШСхатский", т.е. пишутся отдельно и двубуквенные варианты и следом за ними тот же вариант но по одной букве.
Может у кого нибудь есть идея?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34101875
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Dim b9 As String
russB9 = ""
b9 = Range("B9").Value
dlina = Len(b9)
'Сначала обрабатываем самые "длинные" буквы:
i =  1 
Do While i <= dlina
     r = ""
     'Проверю, малоли буква большая была:
     uc = False
     s = Mid$(b9, i,  2 )
     If UCase$(Left$(s,  1 )) = Left$(s,  1 ) Then uc = True
     s = LCase$(s)
     Select Case True
              Case s = "ch": r = "ч": i = i +  2 
              Case s = "sh": r = "ш": i = i +  2 
              Case s = "zg": r = "ж": i = i +  2 
              ' и так далее
              Case Else
                s = LCase$(Mid$(b9, i,  1 ))
                Select Case True
                    Case s = "a": r = "а": i = i +  1 
                    Case s = "b": r = "б": i = i +  1 
                    Case s = "c": r = "к": i = i +  1 
                    Case s = "d": r = "д": i = i +  1 
                    Case s = "e": r = "е": i = i +  1 
                    Case s = "f": r = "ф": i = i +  1 
                    Case s = "g": r = "г": i = i +  1 
                    Case s = "h": r = "х": i = i +  1 
                    Case s = "i": r = "и": i = i +  1 
                    Case s = "j": r = "й": i = i +  1 
                    Case s = "k": r = "к": i = i +  1 
                    Case s = "l": r = "л": i = i +  1 
                    Case s = "m": r = "м": i = i +  1 
                    Case s = "n": r = "н": i = i +  1 
                    Case s = "o": r = "о": i = i +  1 
                    Case s = "p": r = "п": i = i +  1 
                    Case s = "q": r = "к": i = i +  1 
                    Case s = "r": r = "р": i = i +  1 
                    Case s = "s": r = "с": i = i +  1 
                    Case s = "t": r = "т": i = i +  1 
                    Case s = "u": r = "у": i = i +  1 
                    Case s = "v": r = "в": i = i +  1 
                    Case s = "w": r = "в": i = i +  1 
                    Case s = "x": r = "д": i = i +  1 
                    Case s = "y": r = "й": i = i +  1 
                    Case s = "'": r = "д": i = i +  1 
                    Case s = " ": r = " ": i = i +  1 
                    Case Else: r = s: i = i +  1 
     End Select
     If uc = True Then r = UCase$(r)
     russB9 = russB9 + r
Loop

Range("d9").Value = russB9
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34101905
Suleyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попросов больше не имею!
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34397502
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SuleymanСпасибо, попросов больше не имею!

есть более простой вариант без всяких Case, как всё гениальное – простое, смотрите, может пригодится кому?

Private Const vbLat as string = "zxcvbnmasdfghjklwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP"
Private Const vbCyr as string = "зхцвбнмасдфгхжклшертйуиопЗХЦВБНМАСДФГХЖКЛШЕРТЙУИОП"

Public Sub LatTransCyr(byref LatText as string)
Dim s as string, char as string
Dim l as long, i as long, p as long

Let l = Len(LatText)
For i = 1 To l Step 1
Let char = Mid$(LatText,i,1)
Let p = InStr(1,vbLat,char)
If (p>0) Then
Let s = s & Mid$(vbCyr,p,1)
Else
Let s = s & char
End If
Next i
Let LatText = s
End Sub

Такой принцип везде можно применять, а в Делфи так вообще повсеместно, там хоть массивы-константы есть из чего угодно. Попробуйте!!!
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34397503
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Dim b9 As String
russB9 = ""
b9 = Range("B9").Value
dlina = Len(b9)
'Сначала обрабатываем самые "длинные" буквы:
i =  1 
Do While i <= dlina
     r = ""
     'Проверю, малоли буква большая была:
     uc = False
     s = Mid$(b9, i,  2 )
     If UCase$(Left$(s,  1 )) = Left$(s,  1 ) Then uc = True
     s = LCase$(s)
     Select Case True
              Case s = "ch": r = "ч": i = i +  2 
              Case s = "sh": r = "ш": i = i +  2 
              Case s = "zg": r = "ж": i = i +  2 
              ' и так далее
              Case Else
                s = LCase$(Mid$(b9, i,  1 ))
                Select Case True
                    Case s = "a": r = "а": i = i +  1 
                    Case s = "b": r = "б": i = i +  1 
                    Case s = "c": r = "к": i = i +  1 
                    Case s = "d": r = "д": i = i +  1 
                    Case s = "e": r = "е": i = i +  1 
                    Case s = "f": r = "ф": i = i +  1 
                    Case s = "g": r = "г": i = i +  1 
                    Case s = "h": r = "х": i = i +  1 
                    Case s = "i": r = "и": i = i +  1 
                    Case s = "j": r = "й": i = i +  1 
                    Case s = "k": r = "к": i = i +  1 
                    Case s = "l": r = "л": i = i +  1 
                    Case s = "m": r = "м": i = i +  1 
                    Case s = "n": r = "н": i = i +  1 
                    Case s = "o": r = "о": i = i +  1 
                    Case s = "p": r = "п": i = i +  1 
                    Case s = "q": r = "к": i = i +  1 
                    Case s = "r": r = "р": i = i +  1 
                    Case s = "s": r = "с": i = i +  1 
                    Case s = "t": r = "т": i = i +  1 
                    Case s = "u": r = "у": i = i +  1 
                    Case s = "v": r = "в": i = i +  1 
                    Case s = "w": r = "в": i = i +  1 
                    Case s = "x": r = "д": i = i +  1 
                    Case s = "y": r = "й": i = i +  1 
                    Case s = "'": r = "д": i = i +  1 
                    Case s = " ": r = " ": i = i +  1 
                    Case Else: r = s: i = i +  1 
     End Select
     If uc = True Then r = UCase$(r)
     russB9 = russB9 + r
Loop

Range("d9").Value = russB9


Посмотри мой вариант, может пригодиться?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34425018
unicode11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A kak zdes mojno delat tak chto proqramma rabotala ne dlya 1-qo yacheyka (B9), a vo ves tekst, ili xotyabi dlya 1-qo stolbtsa? Napirmer, dlya s B1 do B20?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34426291
unicode11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ни кто не поможеть как это сделать?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34426899
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicode11Ни кто не поможеть как это сделать?

ты про что вообще спрашиваешь

Как текст в ряде ячеек изменить, так может использовать цик пробега по массиву ячеек? не пробовал?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34427384
unicode11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Da, imenno eto sprashivayu. I ne odin stolbets, a ves tekst,napirmer stolbtsi:A,B,C
Dela v tom chto ya VB sovsem nicheqo neznayu, a zdes ponodobilas srochno vot takoy vesh .Iskal po forumu nashel etot topik, no ne moqu dodelat to chto mne nujno.
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34427851
unicode11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще специальные символы (напирмер арабские буквы ) как можно здесь реализовать?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34427960
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините Бога ради. Может я невнимательно прочитал сей топик, но вот никак не вспомню как на транслите будет "Щ" и "Й".
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34427967
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, если "zg" - "ж", то что тогда "zh"?
...
Рейтинг: 0 / 0
Cлово с английского должно писаться по русски
    #34428318
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все показанные варианты опираются на использование циклов, что делает их медленными. Использование функции Replace позволяет их (циклы) избежать.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Cлово с английского должно писаться по русски
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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