Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли верменно отключить "Option Compare Text"?

248
09 декабря 2007 года
Dmitry2064
590 / / 06.12.2006
У меня в декларациях заряжено Option Compare Text. А могу ли я в какой-то процедуре временно это отключить (чтобы учитывать регистр букв)?
405
10 декабря 2007 года
Dmitrii
554 / / 16.12.2004
Цитата: Dmitry2064
У меня в декларациях заряжено Option Compare Text. А могу ли я в какой-то процедуре временно это отключить (чтобы учитывать регистр букв)?


Используйте функцию StrComp() с указанием соответствующего режима сравнения строк.

 
Код:
Option Compare Text

Sub Example()
If StrComp("ABC", "abc", vbBinaryCompare) = 0 Then
    MsgBox "Строки равны."
Else
    MsgBox "Строки не равны."
End If
End Sub
248
10 декабря 2007 года
Dmitry2064
590 / / 06.12.2006
Посмотрел и обнаружил, что у меня несколько другой код (в нем сложнова-то приписть инструкцию StrComp:
Код:
Sub RenameBMPFile()
ipath$ = ActiveDocument.Path & "\"
    iFileName$ = Dir(ipath$ & "*.bmp")
    Do While iFileName$ <> ""
       iTempName$ = iFileName$
       For iCount% = 1 To Len(iFileName$)
           iSymbol$ = Mid(iFileName$, iCount%, 1)
If iSymbol$ Like "[Т-Э]" Then _
Mid(iTempName$, iCount%, 1) = "1"
Next
       If iTempName$ <> iFileName$ Then _
       Name ipath$ & iFileName As ipath$ & iTempName$
       iFileName = Dir
    Loop
End Sub

Т.е. я тут менял (как мне подсказали) проблемные большие буквы просто на единичку (как сначала хотел) (см. выделенное жирным). А можно ли как-то записать, что если символы такие, как в скобках, то делать их маленькими? А пока я сделал в лоб:
 
Код:
If iSymbol$ Like "Т" Then Mid(iTempName$, iCount%, 1) = "т"
If iSymbol$ Like "У" Then Mid(iTempName$, iCount%, 1) = "у"
...
If iSymbol$ Like "Э" Then Mid(iTempName$, iCount%, 1) = "э"


Дополнит. мысли:
1. Может быть просто зарядить условие, что все буквы должны быть маленькими? (без всяких там "значений в интервале [Т-Э]").
2. Если сидит OptionCompareText, то условие If iTempName$ <> iFileName$ Then _ всегда оказывается ложным. А при отключении OptionCompareText переименовывается, при включении - нет (что логично).
Я бы вообще убрал эту OptionCompareText, но у меня Instr сидит местах в 30, поэтому замучаюсь все отлавливать и исправлять на StrComp. Или это можно сделать банальной заменой по всему модулю Instr нa StrComp?
405
10 декабря 2007 года
Dmitrii
554 / / 16.12.2004
Цитата: Dmitry2064
...А можно ли как-то записать, что если символы такие, как в скобках, то делать их маленькими? А пока я сделал в лоб:
 
Код:
If iSymbol$ Like "Т" Then Mid(iTempName$, iCount%, 1) = "т"
If iSymbol$ Like "У" Then Mid(iTempName$, iCount%, 1) = "у"
...
If iSymbol$ Like "Э" Then Mid(iTempName$, iCount%, 1) = "э"


1. Выражения вида [color=red]Mid(iTempName$, iCount%, 1) = "э"[/color] являются ошибочными.
2. Думаю, что в подобном случае удобнее поступить так:

 
Код:
iSymbol$ = Mid(iFileName$, iCount%, 1)
intAsc% = Asc(iSymbol$)
If intAsc% >= 210 And intAsc% <= 221 Then
    MsgBox Chr(intAsc% + 32)
End If

Цитата: Dmitry2064
...Или это можно сделать банальной заменой по всему модулю Instr нa StrComp?


Нельзя.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог