Программирование на VBA.Создание макроса для Excel

CLAY
Оффлайн
Регистрация
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 пишется так:

Листинг :
Описание

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).И нажимаем «Ок».Всё наша кнопка полностью готова!

Теперь проверим наш макрос. Выделим текст и нажмём на кнопку запуска макроса.
 
Сверху Снизу