Страница: 1 |
Страница: 1 |
Вопрос: КТО ЗНАЕТ!
Добавлено: 06.08.10 19:44
Автор вопроса: Marlen
Создан поиск и замена букв по клавиш ASCII (vbcode) -
Код:
Sub Replace ()
Dim NUMBER, I
For I = 1 To 15000
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
NUMBER = AscW(Selection.Text)
If Len(Selection.Text) > 1 Then
Exit For
End If
Select Case NUMBER
Case 1040
Selection.TypeText Text:="A"
Case 1041
Selection.TypeText Text:="B"
' и так далее
End Select
Next
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.HomeKey Unit:=wdLine
End Sub
но есть следующая проблема например нужно заменит несколько букв “аbv” на “абв” или “g`” на “г”
Например
Case 1040+1041
Selection.TypeText Text:="AБ" - но это ошибочно
Ну как быт знатоки!
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Just
Вопросов: 4
Ответов: 330
Профиль | | #1
Добавлено: 07.08.10 08:56
а если так?
и кстати в конце выбора должен стоять всегда "case else"
Номер ответа: 2
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 07.08.10 10:15
и кстати в конце выбора должен стоять всегда "case else"
Не должен
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 07.08.10 10:18
AscW возвращает только код первого символа, вне зависимости от того сколько символов в строке
Номер ответа: 4
Автор ответа:
Just
Вопросов: 4
Ответов: 330
Профиль | | #4
Добавлено: 07.08.10 12:14
http://msdn.microsoft.com/ru-ru/library/cy37t14y(VS.90).aspx
это я привел в первом что нашел, но я читал msdn на английском, и если память не изменяет, там писалось, что else должен стоять в любом случае
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 07.08.10 14:18
Во-первых это документация по VB.NET 9.0 а не по VBA
Во-вторых, в VB .NET, так же как и в VBA, Case Else не является обязательным. Об этом также говорится в ссылке которую ты дал:
В нотации MSDN квадратные скобки означают опциональные части.
Номер ответа: 6
Автор ответа:
Just
Вопросов: 4
Ответов: 330
Профиль | | #6
Добавлено: 07.08.10 14:35
я понимаю, что в таких скобках необязательные параметры, но, если будит значение, не указанное заранее получится ошибка, так не проще ли ставить else?
Номер ответа: 7
Автор ответа:
Just
Вопросов: 4
Ответов: 330
Профиль | | #7
Добавлено: 07.08.10 22:13
разве если не один вариант не совпадет, не будит ошибки?
Номер ответа: 8
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #8
Добавлено: 07.08.10 22:55
не будет. Просто не выполнится ни один из задуманных вариантов действий.
Номер ответа: 9
Автор ответа:
Just
Вопросов: 4
Ответов: 330
Профиль | | #9
Добавлено: 08.08.10 20:22
ясно. спасибо обоим что поправили.
Номер ответа: 10
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #10
Добавлено: 10.08.10 12:35
Ну а для решения задачи наверное придётся юзать регулярные выражения.
Номер ответа: 11
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #11
Добавлено: 17.08.10 08:33
Может просто реплейсменты сделать в порядке убывания длины сочетаний символов?