В наши дни мы не редко забываем переключать раскладку клавиатуры во время набора текста, что в дальнейшем введет к трате времени на повторное редактирование текста. Так вот в этом уроке вы узнаете, как создать полезный макрос для Excel, который будет переводить текст из латиницы в кириллицу и наоборот! Так как MS Office в качестве языка для программирования макросов использует Visual Basic 6, то прежде приступить к изучению данной статьи следует прочитать предыдущую её часть. В дальнейшем после понимания принципа работы в Visual Basic, вы сможете придумывать и программировать свои собственные программы и макросы для MS Office. И так давайте приступим к написанию данного макроса. 1.Открытие редактора и создание модуля. Для начала зайдём в Excel, и откроем редактор Visual Basic 6. Создадим новый модуль:Insert->Module Введём процедуры начала и конца. 2.Ввод переменных. Типы данных, которые будут использоваться в нашей программе: String - строковый тип. Предназначен для хранения строк различной длинны. Возможная длинна строки, может, доходит до 2-х миллионов символов кодировки Unicode. Объем памяти для хранения переменной выделяется в зависимости от длинны строки. Integer - предназначен для обработки целочисленных значений. Переменная подобного типа занимает 4 байта. Возможные значения находятся в промежутке от - 2 147 483 648 до 2 147 483 647. Ввод переменных: Где: aLatter – в эту переменную записывается начальное значение символа и конечное. theText - в эту переменную записывается выделенный фрагмент текста. NumChar – в эту переменную записывается количество знаков в выделенном тексте. NewText – в эту переменную записывается конечный результат который видит пользователь. i – начало отсчёта цикла. 3.Создание цикла и Select Сase. Цикл в VB пишется так: Листинг : Описание For counter = start To end [statements] Next [counter] Нажмите, чтобы раскрыть...Где: Counter - числоваяпеременная. Управляющая переменная цикла. Start – начальное значение цикла End – конечное значение цикла Statements - одно или несколько выражений между For и Next, выполняемых указанное число раз. Оператор Select...Case выполняет один из блоков операторов в зависимости от значения выражения.Пример использования: Листинг : Описание Select [ Case ] testexpression [ Case expressionlist [ statements ] ] [ Case Else [ elsestatements ] ] End Select Нажмите, чтобы раскрыть...Где: testexpression - обязательныйпараметр. Выражение expressionlist - список возможных значений для testexpression. Несколько выражений разделяются запятыми. elsestatements - Один или несколько операторов, следующих за Case Else, которые выполняются, если testexpression не соответствует ни одному из предложений в expressionlist всех операторов Case. Сейчас я напишу весь код программы, затем мы постепенно его разберем. Листинг : Спойлер: Листинг Описание Sub convert_Text() Dim aLatter As String, theText As String, NumChar As Integer, NewText As String, i As Integer Dim theRow As Integer, theCol As Integer For Each Part In Selection For Each Cell In Part NewText = "" theText = Cell.Value NumChar = Len(theText) For i = 1 To NumChar aLatter = Mid(theText, i, 1) Select Case aLatter Case " " aLatter = " " Case "й" aLatter = "q" Case "Й" aLatter = "Q" Case "ц" aLatter = "w" Case "Ц" aLatter = "W" Case "у" aLatter = "e" Case "У" aLatter = "E" Case "к" aLatter = "r" Case "К" aLatter = "R" Case "е" aLatter = "t" Case "Е" aLatter = "T" Case "н" aLatter = "y" Case "Н" aLatter = "Y" Case "г" aLatter = "u" Case "Г" aLatter = "U" Case "ш" aLatter = "i" Case "Ш" aLatter = "I" Case "щ" aLatter = "o" Case "Щ" aLatter = "O" Case "з" aLatter = "p" Case "З" aLatter = "P" Case "х" aLatter = "[" Case "Х" aLatter = "{" Case "ъ" aLatter = "]" Case "Ъ" aLatter = "}" Case "ф" aLatter = "a" Case "Ф" aLatter = "A" Case "ы" aLatter = "s" Case "Ы" aLatter = "S" Case "в" aLatter = "d" Case "В" aLatter = "D" Case "а" aLatter = "f" Case "А" aLatter = "F" Case "п" aLatter = "g" Case "П" aLatter = "G" Case "р" aLatter = "h" Case "Р" aLatter = "H" Case "о" aLatter = "j" Case "О" aLatter = "J" Case "л" aLatter = "k" Case "Л" aLatter = "K" Case "д" aLatter = "l" Case "Д" aLatter = "L" Case "ж" aLatter = ";" Case "Ж" aLatter = ":" Case "э" aLatter = "'" Case "Э" aLatter = Chr(34) Case "я" aLatter = "z" Case "Я" aLatter = "Z" Case "ч" aLatter = "x" Case "Ч" aLatter = "X" Case "с" aLatter = "c" Case "С" aLatter = "C" Case "м" aLatter = "v" Case "М" aLatter = "V" Case "и" aLatter = "b" Case "И" aLatter = "B" Case "т" aLatter = "n" Case "Т" aLatter = "N" Case "ь" aLatter = "m" Case "Ь" aLatter = "M" Case "б" aLatter = "," Case "Б" aLatter = "<" Case "ю" aLatter = "." Case "Ю" aLatter = ">" ' Case "." ' aLatter = "/" ' Case "," ' aLatter = "?" Case "q" aLatter = "й" Case "Q" aLatter = "Й" Case "w" aLatter = "ц" Case "W" aLatter = "Ц" Case "e" aLatter = "у" Case "E" aLatter = "У" Case "r" aLatter = "к" Case "R" aLatter = "К" Case "t" aLatter = "е" Case "T" aLatter = "Е" Case "y" aLatter = "н" Case "Y" aLatter = "Н" Case "u" aLatter = "г" Case "U" aLatter = "Г" Case "i" aLatter = "ш" Case "I" aLatter = "Ш" Case "o" aLatter = "щ" Case "O" aLatter = "Щ" Case "p" aLatter = "з" Case "P" aLatter = "З" Case "[" aLatter = "х" Case "{" aLatter = "Х" Case "]" aLatter = "ъ" Case "}" aLatter = "Ъ" Case "a" aLatter = "ф" Case "A" aLatter = "Ф" Case "s" aLatter = "ы" Case "S" aLatter = "Ы" Case "d" aLatter = "в" Case "D" aLatter = "В" Case "f" aLatter = "а" Case "F" aLatter = "А" Case "g" aLatter = "п" Case "G" aLatter = "П" Case "h" aLatter = "р" Case "H" aLatter = "Р" Case "j" aLatter = "о" Case "J" aLatter = "О" Case "k" aLatter = "л" Case "K" aLatter = "Л" Case "l" aLatter = "д" Case "L" aLatter = "Д" Case ";" aLatter = "ж" Case ":" aLatter = "Ж" Case "'" aLatter = "э" Case Chr(34) aLatter = "Э" Case "z" aLatter = "я" Case "Z" aLatter = "Я" Case "x" aLatter = "ч" Case "X" aLatter = "Ч" Case "c" aLatter = "с" Case "C" aLatter = "С" Case "v" aLatter = "м" Case "V" aLatter = "М" Case "b" aLatter = "и" Case "B" aLatter = "И" Case "n" aLatter = "т" Case "N" aLatter = "Т" Case "m" aLatter = "ь" Case "M" aLatter = "Ь" Case "," aLatter = "б" Case "<" aLatter = "Б" Case "." aLatter = "ю" Case ">" aLatter = "Ю" Case "/" aLatter = "." Case "?" aLatter = "," Case Else aLatter = aLatter End Select NewText = NewText & aLatter Next i Cell.Value = NewText Next Cell Next Part End Sub Теперь разберем строки нашего макроса: Если кратко описать то, эти две строчки отвечают за считывание данных с выделенной области. Здесь у нас происходит: Обнуление переменной NewText. Присваивание переменной theText выделенного текста. Присваивание переменной NumChar количество букв содержащихся в переменной theText. Создание цикла от 1 до NumChar. Присваивание переменной aLatter одну из букв содержащихся в theText.Начинается присваивание с самого первого символа(I=1) и заканчивается последним (NumChar). Далее идёт Select Case, который проверяет значение переменной aLater и заменяет её символом, который содержится в определённом Case. Если среди Case нет нужного символа тогда,Case Else присваивает переменой aLatter саму себя, т.е. символ в выделенном тексте не изменяется. End Select заканчиваетоператор Select Case. В этих строках происходит генерирование нового текста, с помощью цикла, т.е. с каждым новым выполнением выражений из цикла в переменную NewText записывается содержимое NewText + содержимое aLatter ,и это происходит пока не закончиться выполняться цикл. В конце мы получим готовую сгенерированную строчку. Здесь происходит замена выделенного текста содержимым из NewText. Конец программы. Далее сохраняем наш макрос и идём в Excel. 3.Создаём кнопку Для того чтобы бы наш макрос работал нам нужно создать кнопку на панели инструментов. Что бы это сделать нажимаем п.к.м на панели инструментов и выбираем «Настройка». Дальше, выбираем категорию «Макросы» и перетаскиваем «Настраиваемая кнопка» на панель инструментов. Выделяем кнопку и нажимаем «Изменить выделенный объект». Из появившегося меню выбираем «назначить макрос». Из появившегося окна, выбираем наш макрос(Convert_Text).И нажимаем «Ок».Всё наша кнопка полностью готова! Теперь проверим наш макрос. Выделим текст и нажмём на кнопку запуска макроса. Предлагаю услуги по: 1. Сделаю зеркало любого сайта в сети ТОR 2. Блокировка ЛЮБОГО QIWI Номера (Быстро) Мануалы и софт выложены в ознакомительных целях вся ответственность за использования ложится на вас. Софт советую использовать на виртуалке.