Страница: 1 |
Страница: 1 |
Вопрос: Помогите
Добавлено: 28.09.06 16:45
Автор вопроса: Roman | ICQ: 343-133-143
В книге VBA и Offic 97 есть пример макроса перевода из кирилицы в латиницу там есть строка
sym1 As Range
For Each sym1 In Selection.Characters
Как я понял означает - для каждого символа в выбранном диапазоне
Но объявление переменной sym1 As Range не коректное?
Как правильно
Вот весь текс листинга
Public Sub FromRuToLat()
Dim alu(1 To 32) As String
alu(1) = "A": alu(2) = "B": alu(3) = "V": alu(4) = "G"
alu(5) = "D": alu(6) = "E": alu(7) = "J": alu(8) = "Z"
alu(9) = "I": alu(10) = "I": alu(11) = "K": alu(12) = "L"
alu(13) = "M": alu(14) = "N": alu(15) = "O": alu(16) = "P"
alu(17) = "R": alu(18) = "S": alu(19) = "T": alu(20) = "U"
alu(21) = "F": alu(22) = "H": alu(23) = "C": alu(24) = "Ch"
alu(25) = "CH": alu(26) = "Sch": alu(27) = "'": alu(28) = "Y"
alu(29) = "'": alu(30) = "E": alu(31) = "Yu": alu(32) = "Ya"
Dim sim As String
sym1 As Renge
Dim index As Byte
Dim s As String
Dim result As String
result = ""
For Each sym1 In Selection.Characters РУГАЕТСЯ ЗДЕСЬ
sym = sym1
sym = UCase(sym)
Select Case sym
Case "À" To "ß"
index = Asc(sym) - Asc("À") + 1
s = alu(index)
If sym <> sym1 Then s = LCase(s)
sym = s
Case "¨"
s = "E"
If sym <> sym1 Then s = LCase(s)
sym = s
Case Else
sym = sym1
End Select
result = result + sym
Next
Selection.typetext result
End Sub
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #1
Добавлено: 28.09.06 17:00
Ну наверно там опечатка: имелось в виду
Номер ответа: 2
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #2
Добавлено: 28.09.06 17:04
Т. е. ... As Range
Номер ответа: 3
Автор ответа:
Roman
ICQ: 343-133-143
Вопросов: 3
Ответов: 6
Профиль | | #3
Добавлено: 28.09.06 17:11
Все равно не помогает такое очучение, что прога не понимает
Dim sym1 As Range
А точнее не понимает As Range
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 28.09.06 17:20
А где, на какой строке она ошибку выводит?
Номер ответа: 5
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #5
Добавлено: 28.09.06 17:21
Да и вообще по-моему
'или
sym = sym1.text
Номер ответа: 6
Автор ответа:
Roman
ICQ: 343-133-143
Вопросов: 3
Ответов: 6
Профиль | | #6
Добавлено: 28.09.06 17:27
РУГАЕТСЯ ЗДЕСЬ
For Each sym1 In Selection.Characters
Номер ответа: 7
Автор ответа:
Незнайка
Вопросов: 7
Ответов: 188
Профиль | | #7
Добавлено: 28.09.06 17:35
В VBA невозможно перебирать элементы коллекции Characters циклом For Each. Используйте для каждой ячейки:
For x = 1 To sym1.Characters.Count
'...
Next x
Скорость от этого не изменится.