Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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 "&#168;"
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-сайт: sham.clan.su
 Профиль | | #1
Добавлено: 28.09.06 17:00
Ну наверно там опечатка: имелось в виду
Dim sym1 As Renge

Ответить

Номер ответа: 2
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #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-сайт: sham.clan.su
 Профиль | | #4
Добавлено: 28.09.06 17:20
А где, на какой строке она ошибку выводит?

Ответить

Номер ответа: 5
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #5
Добавлено: 28.09.06 17:21
Да и вообще по-моему
sym = sym1
такая работа с range-переменной недопустима, попрбуй например
sym = sym1.Value
'или
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. Используйте для каждой ячейки:
Dim sym1 As Range
For x = 1 To sym1.Characters.Count
'...
Next x

Скорость от этого не изменится.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам