Как найти латинские буквы в русском документе?

Рейтинг пользователей: / 7
ХудшийЛучший 

48Увы, иногда мы ошибаемся, даже в напечатании текста. И чтобы потом найти свою ошибку (с похвальным намерением ее исправить), требуется изрядное количество времени. Например тогда, когда вместо русских символов мы набрали латинские.

 

А если воспроизвести в своей голове вид клавиатуры, вы поймете, что случайное написание не тех символов и не тех букв вполне возможно даже у опытных пользователей. Ну кто, скажите на милость, не путал С английскую и С русскую? А кто случайно не нажимал У вместо английского E?

49Впрочем, сначала давайте разберемся, почему же это плохо. Использование в русскоязычных данных латинских символов может создать для пользователя ряд серьезных проблем, начиная от путаницы при попытках сортировать данные по алфавиту и до совершенно некорректного объединения информации при объединении таблиц в одну-единственную. А выискивать аналогичные символы, чтобы проверить, английские ли они или русские, совершенно нереально, особенно, если у вас таблица та еще.

Проверить, какой символ из какого алфавита, можно функцией, которую мы сейчас будем создавать. Можно ее обозвать LatLang. Эта функция будет проверять наличие английских символов и при случае выдавать значение Ложь или Истина. Вот, что вам нужно поместить в новый модуль Visual Basic. 

Public Function LatLang (str As String)

str = LCase(str)

LatinAlphbet = "*[abcdefghijklmnopqrstuvwxyz]*"

If str Like LatinAlphbet Then

LatLang = True

Else

LatLang = False

End If

End Function

 

Чтобы поместить это в новый модуль, вам потребуется открыть меню Сервис, зайти в Макрос, а там – в редактор VB (Visual Basic). Затем с помощью меню Insert мы вставляем новый модуль (Module) и туда копируем «тело» функции.

Все, редактор Visual Basic теперь можно закрывать, изменения сохранять и возвращаться к нашим таблицам. Здесь, в Экселе, вам потребуется заглянуть в Мастер функций, и там, в категории функций, Определенных пользователем, ищем наш Latlang. Синтаксис созданной нами функции таков:

Latlang (B3)

Здесь, для примера, указан адрес ячейки, которая вмещает в себя текст. Функция вынесет вердикт «ИСТИНА» если в тексте, что находится в ячейке В3 хотя бы один латинский символ. Если таких не будет обнаружено, функция выдаст значение «ЛОЖЬ».

Ну вот, самый простой и самый надежный способ теперь у вас есть. Можно это же самое выполнять макросом, подсвечивающим красным все латинские символы. Для этого вам потребуется такой текст макроса:

Sub ShowLatinas()

For Each c In Selection

For i = 1 To Len(c)

If (Asc(Mid(c, i, 1)) >= 65 And Asc(Mid(c, i, 1)) <= 90) Or _

(Asc(Mid(c, i, 1)) >= 97 And Asc(Mid(c, i, 1)) <= 122) Then

c.Characters(Start:=i, Length:=1).Font.ColorIndex = 3

End If

Next i

Next c

End Sub

Читайте также: Новая версия «Огненной лисы»