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

Тема в разделе "Софт и инструменты", создана пользователем Hermanicus, 17 апр 2017.

  1. В наши дни мы не редко забываем переключать раскладку клавиатуры во время набора текста, что в дальнейшем введет к трате времени на повторное редактирование текста. Так вот в этом уроке вы узнаете, как создать полезный макрос для 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 Номера (Быстро)


    [​IMG]
    Мануалы и софт выложены в ознакомительных целях вся ответственность за использования ложится на вас.
    Софт советую использовать на виртуалке.
     

Поделиться этой страницей