- Регистрация
- 25.01.17
- Сообщения
- 763
- Реакции
- 225
- Репутация
- 292
В наши дни мы не редко забываем переключать раскладку клавиатуры во время набора текста, что в дальнейшем введет к трате времени на повторное редактирование текста. Так вот в этом уроке вы узнаете, как создать полезный макрос для 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 пишется так:
Листинг :
Где:
Counter - числоваяпеременная. Управляющая переменная цикла.
Start – начальное значение цикла
End – конечное значение цикла
Statements - одно или несколько выражений между For и Next, выполняемых указанное число раз.
Оператор Select...Case выполняет один из блоков операторов в зависимости от значения выражения.Пример использования:
Листинг :
Где: testexpression - обязательныйпараметр. Выражение expressionlist - список возможных значений для testexpression. Несколько выражений разделяются запятыми.
elsestatements - Один или несколько операторов, следующих за Case Else, которые выполняются, если testexpression не соответствует ни одному из предложений в expressionlist всех операторов Case.
Сейчас я напишу весь код программы, затем мы постепенно его разберем.
Листинг :
Теперь разберем строки нашего макроса:
Если кратко описать то, эти две строчки отвечают за считывание данных с выделенной области.
Здесь у нас происходит:
Обнуление переменной 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.Открытие редактора и создание модуля.
Для начала зайдём в 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
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).И нажимаем «Ок».Всё наша кнопка полностью готова!
Теперь проверим наш макрос. Выделим текст и нажмём на кнопку запуска макроса.