Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Cлово с английского должно писаться по русски / 25 сообщений из 46, страница 1 из 2
29.10.2006, 18:46
    #34089529
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Подскажите как сделать что бы слово с английского писалось по русски. пример: в ячейке А1 - Рetr Ivanov, соответственно в ячейке А2 после исполнения макроса будет - Петр Иванов, и сооотв-но любые варианты имен.
...
Рейтинг: 0 / 0
30.10.2006, 07:47
    #34089943
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Думаю придётся повозиться. А для начала вот так...
Код: 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
30.10.2006, 16:05
    #34091724
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Спасибо. Еще, если не трудно подскажите как сделать что бы всё это дело выполнялось на листе "INFO", и что бы осталось только вставить в модуль. Да, и что делать с такими буквами как "ch, sh"?
...
Рейтинг: 0 / 0
30.10.2006, 16:19
    #34091794
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Расширить надо предложенную программу:
Код: 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
30.10.2006, 16:21
    #34091811
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Ёлы-палы, ошибочку допустил
Код: 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
30.10.2006, 21:58
    #34092485
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Смысл я понял, спасибо, помогите закончить, не врублюсь как его запустить. Не силен я в программировании. Нужно что бы работал на листе "INFO", я так думаю всё это вставить нужно в модуль, пытаюсь но не получается.
...
Рейтинг: 0 / 0
31.10.2006, 13:59
    #34094167
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Мужики, ну помогите доделать, пол шага осталось. У самого не получается. Ставлю в модуль, он не работает. Напишите если можно полностью. please!
...
Рейтинг: 0 / 0
31.10.2006, 23:51
    #34095968
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
...
Рейтинг: 0 / 0
01.11.2006, 22:17
    #34099145
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
...
Рейтинг: 0 / 0
01.11.2006, 23:53
    #34099246
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Огромное спасибо, супер!
...
Рейтинг: 0 / 0
02.11.2006, 02:41
    #34099355
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Есть не большие проблемки в работе, на пример:
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
02.11.2006, 12:40
    #34100466
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
...
Рейтинг: 0 / 0
02.11.2006, 14:18
    #34100962
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Да, с кнопкой идея не плохая спасибо, но другая проблема остается:
"Shatskiy" пишется как "ШСхатский", т.е. пишутся отдельно и двубуквенные варианты и следом за ними тот же вариант но по одной букве.
Может у кого нибудь есть идея?
...
Рейтинг: 0 / 0
02.11.2006, 17:32
    #34101875
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Код: 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
02.11.2006, 17:37
    #34101905
Suleyman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Спасибо, попросов больше не имею!
...
Рейтинг: 0 / 0
17.03.2007, 08:28
    #34397502
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
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
17.03.2007, 08:29
    #34397503
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
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
29.03.2007, 15:38
    #34425018
unicode11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
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
30.03.2007, 07:28
    #34426291
unicode11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Ни кто не поможеть как это сделать?
...
Рейтинг: 0 / 0
30.03.2007, 11:38
    #34426899
Программист Дёня
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
unicode11Ни кто не поможеть как это сделать?

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

Как текст в ряде ячеек изменить, так может использовать цик пробега по массиву ячеек? не пробовал?
...
Рейтинг: 0 / 0
30.03.2007, 13:32
    #34427384
unicode11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
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
30.03.2007, 15:29
    #34427851
unicode11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
И еще специальные символы (напирмер арабские буквы ) как можно здесь реализовать?
...
Рейтинг: 0 / 0
30.03.2007, 15:55
    #34427960
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Извините Бога ради. Может я невнимательно прочитал сей топик, но вот никак не вспомню как на транслите будет "Щ" и "Й".
...
Рейтинг: 0 / 0
30.03.2007, 15:57
    #34427967
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
И еще, если "zg" - "ж", то что тогда "zh"?
...
Рейтинг: 0 / 0
30.03.2007, 17:35
    #34428318
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cлово с английского должно писаться по русски
Все показанные варианты опираются на использование циклов, что делает их медленными. Использование функции Replace позволяет их (циклы) избежать.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Cлово с английского должно писаться по русски / 25 сообщений из 46, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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