Как найти латинские буквы в русском документе?
Увы, иногда мы ошибаемся, даже в напечатании текста. И чтобы потом найти свою ошибку (с похвальным намерением ее исправить), требуется изрядное количество времени. Например тогда, когда вместо русских символов мы набрали латинские.
А если воспроизвести в своей голове вид клавиатуры, вы поймете, что случайное написание не тех символов и не тех букв вполне возможно даже у опытных пользователей. Ну кто, скажите на милость, не путал С английскую и С русскую? А кто случайно не нажимал У вместо английского E?
Впрочем, сначала давайте разберемся, почему же это плохо. Использование в русскоязычных данных латинских символов может создать для пользователя ряд серьезных проблем, начиная от путаницы при попытках сортировать данные по алфавиту и до совершенно некорректного объединения информации при объединении таблиц в одну-единственную. А выискивать аналогичные символы, чтобы проверить, английские ли они или русские, совершенно нереально, особенно, если у вас таблица та еще.
Проверить, какой символ из какого алфавита, можно функцией, которую мы сейчас будем создавать. Можно ее обозвать 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
Читайте также: Новая версия «Огненной лисы»
- 01/10/2011 21:10 - Сортировка ячеек по цвету
- 25/09/2011 13:31 - Условное форматирование
- 28/08/2011 10:09 - Конвертер разных величин
- 21/08/2011 19:33 - Многоуровневые таблицы и группировка строк
- 25/07/2011 11:30 - Делаем выпадающие списки с картинками
- 12/03/2011 23:07 - Условное форматирование таблицы в Excel 2010
- 12/03/2011 22:57 - Рисуем свободную таблицу в Excel 2010
- 13/12/2010 18:17 - Столбцы в Excel – преобразование в строки