Проблема в следующем: надо изменить регистр только части текста в ячейках - а именно ту часть, что написана по-русски. Все файлы (а их несколько тысяч) составлены нашими заокеанскими партнерами на двух языках, причем коряво - во многих ячейках встречаются сразу оба языка и все написано заглавными буквами. Возникла жизненная необходимость заменить русские заглавные на русские строчные (как в предложении), за некоторым исключением в виде аббревиатур. Все макросы, что встречались мне ранее, действуют по замене всей информации в ячейке. Возникла мысль применить функцию CODE для поиска русского алфавита в ячейке и затем уже применить конвертацию. Но никак не соображу, как это прописать. И как в этом случае прописать исключения для аббревиатур? [p.s.]не спец по макросам, задача свалилась в силу непреодолимых обстоятельств, посему буду благодарен за подсказки.
Проблема в следующем: надо изменить регистр только части текста в ячейках - а именно ту часть, что написана по-русски. Все файлы (а их несколько тысяч) составлены нашими заокеанскими партнерами на двух языках, причем коряво - во многих ячейках встречаются сразу оба языка и все написано заглавными буквами. Возникла жизненная необходимость заменить русские заглавные на русские строчные (как в предложении), за некоторым исключением в виде аббревиатур. Все макросы, что встречались мне ранее, действуют по замене всей информации в ячейке. Возникла мысль применить функцию CODE для поиска русского алфавита в ячейке и затем уже применить конвертацию. Но никак не соображу, как это прописать. И как в этом случае прописать исключения для аббревиатур? [p.s.]не спец по макросам, задача свалилась в силу непреодолимых обстоятельств, посему буду благодарен за подсказки.shinkai
Function RUS(s$) AsString Dim i%, ascii%, tmp$ For i = 1ToLen(s)
ascii = Asc(Mid(s, i, 1)) If (ascii >= 192And ascii <= 255Or ascii = 32) Then _
tmp = tmp & LCase(Mid(s, i, 1)) Else _
tmp = tmp & Mid(s, i, 1) Next i
RUS = Trim(tmp) EndFunction
PublicSub www() Dim c As Range For Each c In ActiveSheet.UsedRange.SpecialCells(2).Cells
c = RUS(c.Value) Next EndSub
Function RUS(s$) AsString Dim i%, ascii%, tmp$ For i = 1ToLen(s)
ascii = Asc(Mid(s, i, 1)) If (ascii >= 192And ascii <= 255Or ascii = 32) Then _
tmp = tmp & LCase(Mid(s, i, 1)) Else _
tmp = tmp & Mid(s, i, 1) Next i
RUS = Trim(tmp) EndFunction
PublicSub www() Dim c As Range For Each c In ActiveSheet.UsedRange.SpecialCells(2).Cells
c = RUS(c.Value) Next EndSub
Спасибо, но немного не то. Не могли бы вы написать здесь, какую маску вы установили, а то у меня японский софт, какая-то абракадабра отображается. Полагаю, что там указан класс [А-Я], но кажется там еще что-то, не идентифицирую что именно.
Спасибо, но немного не то. Не могли бы вы написать здесь, какую маску вы установили, а то у меня японский софт, какая-то абракадабра отображается. Полагаю, что там указан класс [А-Я], но кажется там еще что-то, не идентифицирую что именно.
Спасибо, но немного не то. Не могли бы вы написать здесь, какую маску вы установили, а то у меня японский софт, какая-то абракадабра отображается. Полагаю, что там указан класс [А-Я], но кажется там еще что-то, не идентифицирую что именно.
"[А-Я-Ё]"
PublicFunction Lol(astring) AsString Set re = CreateObject("VBScript.RegExp")
re.Pattern = "[А-Я-Ё]"
re.Global = True
re.IgnoreCase = False Set Matches = re.Execute(astring) For Each symbol In Matches
astring = Replace(astring, symbol, LCase(symbol)) Next symbol
Lol = astring EndFunction
Спасибо, но немного не то. Не могли бы вы написать здесь, какую маску вы установили, а то у меня японский софт, какая-то абракадабра отображается. Полагаю, что там указан класс [А-Я], но кажется там еще что-то, не идентифицирую что именно.
"[А-Я-Ё]"
PublicFunction Lol(astring) AsString Set re = CreateObject("VBScript.RegExp")
re.Pattern = "[А-Я-Ё]"
re.Global = True
re.IgnoreCase = False Set Matches = re.Execute(astring) For Each symbol In Matches
astring = Replace(astring, symbol, LCase(symbol)) Next symbol
Lol = astring EndFunction