Сделай Сам Свою Работу на 5

Создание макроса в редакторе VBА





 

При создании макроса в редакторе VBA используется программирование, для того, чтобы создать макрос программным путем, нужно изучить язык программирования для приложений Visual Basic for Application. Макрос (или процедура) имеет начало и конец. Начинается макрос со служебного слова Sub после которого указывается имя макроса, которое задается пользователем, далее идут пустые круглые скобки. Заканчивается макрос служебными словами End Sub. Например:

 

Sub MyMacros()

End Sub

 

Между строками начала и конца макроса располагается тело макроса, которое состоит из инструкций VBA. Каждая инструкция записывается на отдельной строке. Иногда, для наибольшей читабельности, можно разместить одну инструкцию на нескольких строках. Для этого используется комбинация символов подчеркивания и пробела « _», после чего продолжение инструкции записывается на следующей строке, которая воспринимается как продолжение предыдущей. Можно также разместить несколько инструкций в одной строке, для этого используется символ-разделитель «:». Для использования комментариев в программе используется символ апострофа ', текст, размещенный после апострофа и до конца строки не считается текстом программы.



Когда вы создаете новую рабочую книгу в Excel или документ в Word'e, проект не содержит ни одного макроса, а, следовательно, ни одного модуля. Для создания нового модуля необходимо запустить редактор VBA, выбрать пункт меню Insert->Module. По умолчанию вновь созданный модуль имеет имя ModuleN, где N – номер модуля по порядку. Имя модуля можно и желательно изменить, это можно сделать в окне Properties. В окне модуля записывается непосредственно текст макроса.

Запуск редактора VBA осуществляется через кнопку «Visual Basic» на вкладке «Разработчик» или нажатием комбинации клавиш Alt+F11.

 

Задания

1. Записать в ячейке A1 название своей группы (ТМС-21).

Написать макрос, который преобразует это название в название группы на курс старше.

2. Записать в ячейку A1 Фамилию И.О.

Написать макрос, который оставляет от строки только фамилию.

Использовать относительные ссылки

4. Записать в ячейку А1 произвольную строку.

Записать макрос, который выводит в три ячейки коды первых трех символов этой строки.



5. Записать в ячейки А1 и В1 произвольные строки

Записать макрос, который определяет, какая из строк длиннее и изменяет шрифт более длинной строки на жирный курсив

6. Записать в ячейку А1 Фамилию

В ячейку В1 группу

Написать макрос, который выводит в ячейку С1 строку:

(Фамилия) – студент группы (группа), изменяя все буквы группы на прописные, независимо от того, какие буквы были изначально.

7. Записать в три разные ячейки Фамилию, Имя, Отчество

Записать макрос, который выводит Фамилию, Имя, Отчество в одну ячейку

8. Записать в ячейку A1 Фамилию И.О.

Написать макрос, возвращающий только фамилию и ПРОПИСНЫМИ буквами

Использовать абсолютные ссылки

9. Записать в ячейку дату в формате 01.12.2008

Записать макрос, который записывает в заранее созданную таблицу день, месяц и год в соответствующие ячейки, например:

01.12.2008 день месяц Год
 

10. Записать макрос, который создает строку, состоящую из трех подряд записанных в столбец, строк и записывает ее в четвертую ячейку этого столбца, причем первая буква первой строки прописная, остальные – строчные.

В итоговой строке, содержимое исходных строк должно быть разделено пробелами.

Например:

сегодня
Хорошая
погода
Сегодня хорошая погода

Типы данных

Язык программирования создается для того, чтобы оперировать различными данными: изменять их, использовать для получения новых данных, комбинировать и т.д. Любая информация, которую нужно использовать в программе должна быть представлена в определенном виде, понятном для данного языка программирования. При этом, некоторые данные требуют видоизменения, а другие можно использовать в чистом виде. Например, числовые данные есть в любом стандартном языке программирования, поэтому числа можно использовать так как они есть в первоначальном виде задачи. А вот если в задаче присутствуют цены с обозначением денежной единицы, например: 22 руб. или 43$, то эта информация должна быть преобразована к числовому виду, в который не включается обозначение денежной единицы. По-другому обстоит ситуация с данными для которых тип данных вообще не предусмотрен, например, цвет. В таком случае информацию можно закодировать в виде букв или цифр или буквенно-цифрового обозначения, на усмотрение программиста, но через те типы данных, которые могут быть использованы в рамках данного языка программирования.



Типы данных языка программирования и возможности оперирования с ними определяются способом хранения и внутреннего представления информации. Данные различных типов хранятся в VBA по-разному.

Рассмотрим типы данных, использующихся в VBA.

 

Таблица типов данных, использующихся в VBA

Таблица 2

Название Размер выделяе­мой памяти, в байтах Диапазон хранимых значений Примечание
Целые типы
BYTE 1 байт от 0 до 255 Целые числа занимают меньше памяти, и операции над ними выполня­ются гораздо быстрее, чем над вещест­венными числами. VBA автоматически преобразует эти данные в текст, когда их необхо­димо вывести на экран с помощью про­цедуры MSGBOX.
INTEGER 2 байта от-32768 до 32767
LONG 4 байта от2 147 483 648 до 2 147 483 647.
Вещественные типы (числа с плавающей запятой)
SINGLE 4 байта от -3.402823E38 до -1.401298E-45 для отрица­тельных чисел и от 1.401298E-45 до 3.402823E38 для положи­тельных чисел Достоинства: большой диапазон хранимых значений. Недостатки: Арифметические операции над числами вещественных ти­пов выполняются медленнее, чем над целыми числами. Подвержены ошибкам ок­ругления, особенно тип Single Преобразуется в текст при выводе с помощью функции MSGBOX
Вещественные типы (числа с плавающей запятой)
DOUBLE 8 байт от -1.79769313486231E308 до -4.94065645841247E-324 для отрицательных чисел и от 4.94065645841247E-324 до 1.79769313486232E308 для положительных чисел Тип данных двойной точности, т.е. после десятичной запятой в два раза больше значащих цифр, чем у типа Single
CURRENCY 8 байт От -922 337 203 685 477,5808 до 922 337 203 685 477,5807 Тип специально предназначен для денежных расчетов
Строковый тип
STRING 1 байт на каж­дый символ Может содержать до 2-х миллионов символов. Строка переменной длины. Строка рас­ширяется по мере добавления к ней сим­волов.
STRING*N N байт   Строка постоянной длины. N – количе­ство символов в строке. Например: Dim s as string*10 Переменная s сможет воспринять только 10 символов. Все строки в VBA-программе заключа­ются в двойные латинские кавычки, на­пример: “3.14”, ”Привет”.
Дата, время
DATE 8 байт Хранит комбинацию даты и времени. Дата от 1 января 100 г. До 31 декабря 9999 г. Время от 00:00:00 до 23:59:59
Объектный тип
OBJECT 4 байта Содержит ссылку (адрес) на объект
Логический тип
BOOLEAN 2 байт FALSE или TRUE Переменные этого типа принимают всего два значения FALSE или TRUE. Обычно исполь­зуются для проверки истинности какого-либо условия и принятия решения.
VARIANT 16 байт + 1 байт на каждый сим­вол Служит для хранения данных лю­бого типа Используется по умолчанию, если для пе­ременной явно не указан тип. Достоинства: Может хранить данные лю­бого типа, удобно, когда неизвестно информация какого типа будет введена в программу. Недостатки: 1. Занимают очень много места в памяти; 2. Операции с такими данными производятся медленнее, т.к. требуется время на преобра­зование введенной информации к наиболее подходящему типу.
               

 

Рассмотрим более подробно свойства данных каждого типа.

Тип данных DATE

В VBA данные типа Date содержат абсолютную дату, т.е. количество дней, прошедших после начальной даты. Начальной датой в VBA является 30 декабря 1899 года. Т.о., отрицательные числа соответствуют датам ранее начальной, а положительные – более поздней, чем начальная дата. Можно складывать и вычитать даты между собой. Можно складывать и вычитать даты и числа. Целое число типа Data имеет смысл количество дней, например

12.03.00 - 4 = 9.03.00

12.10.04 – 10 = 2.10.04

Как задать значение даты и времени:

Значение даты задается с помощью обрамления символами #. VBA понимает несколько видов констант типа Date, примеры:

#2-5-98 21:52#

#February 5, 1998 9:52# **

#Mar-31-98# *

#15 April 1998#

Независимо от формата, которым вы воспользовались для указания даты, при нажатии клавиши вода VBA преобразует надпись к следующему виду:

#31/03/98# *

#2/5/1998 9:52:00 AM# **

Месяц/день/год

Числовые типы данных (рис. 35)

В VBA есть шесть различных числовых типов: BYTE, INTEGER, LONG, SINGLE, DOUBLE и CURRENCY.Числа чаще всего используются при написании макросов различного рода и имеют самый большой диапазон значений.

Рис. 35. Числовые типы данных

 

Целочисленные типы данных: BYTE, INTEGER, LONG.

Целое число – число без дробной части. Использование чисел целого типа имеет некоторые преимущества: операции над такими числами производятся намного быстрее, при выводе на экран они автоматически преобразуются в текст, они занимают меньше места в памяти.

Тип данных Byte представляет только положительные числа от 0 до 255. Эти числа можно использовать для обозначения небольшого количества каких-либо данных, в качестве счетчика, положительных целочисленных констант и т.д.

Числа типа Integer используются для счетчиков встроенных определенных циклов в соответствии с синтаксисом. Этот тип данных наиболее удобен и популярен для целых чисел, т.к. его размер невелик, но включает и отрицательные числа.

Числа типа Long содержат самые большие целые числа. Этот тип данных используют для больших целочисленных значений, особенно в тех случаях, когда число получается в результате расчетов и заранее сложно предугадать на сколько большим будет полученное число.

Числа с плавающей точкой или вещественный тип данных: SINGLE, DOUBLE.

Числа этих типов могут иметь любое количество знаков до запятой и после запятой (в пределах диапазона), в зависимости от этого она принимает соответствующее положение. Числа типа Double называют так же числами с двойной точностью. Вещественные числа – все нецелые числа. При выборе типа данных числа необходимо внимательно проанализировать его назначение, и если оно может иметь нецелое значение, то тип данных должен быть Single или Double.

Вещественные типы данных имеют ряд недостатков: медленнее производятся арифметические операции, подвержены ошибкам округления, при преобразовании в текст к слишком большим и слишком малым числам применяется экспоненциальная форма записи.

Тип данныхCURRENCY.

Тип данныхCURRENCYявляется типом с фиксированной точкой, т.к. точка всегда находится на одном и том же месте, а справа от нее расположены четыре значащие цифры. Этот тип используется тогда, когда нужна особая точность вычислений, например, денежные вычисления. Математические вычисления с числами этого типа имеют малую ошибку округления или не имеют ее вовсе. Ошибки округления возникают только в случае математических действий, в которых числа типа currency сочетаются с числами других типов. При выводе на экран числа типа currency преобразуются в текст.

Данные типаSTRING

Любые текстовые данные в VBA–программе являются строкой символов. Строка заключается в двойные кавычки и может содержать любые текстовые символы. Строки имеют переменную длину, которая увеличивается или уменьшается в соответствии с количеством символов в ней. Строки в VBA всегда заключаются в двойные английские кавычки. Данные всех других типов могут быть интерпретированы как строка при необходимости их обработки в качестве строки. Например:

34,567 – число вещественного типа, а “34,567” – строка.

Данные типаBOOLEAN

Логический тип данных. Часто для принятия какого-либо решения требуется проверить истинность какого-либо условия. Для упрощения такой проверки и хранения ее результата используются переменные логического типа данных, принимающие значение истина (true) или ложь (false). При преобразовании в строку, выводится значение true или false. Переменные логического типа принимают свои значения в результате сравнения.

Данные типаVARIANT

Это специальный тип данных, в котором можно хранить данные любых типов, кроме объектного. VBA использует этот тип данных всегда, когда явно не задан другой. Переменные типа variant имеют свойства тех данных, которые фактически в них записаны. Данные типа variant используют самое компактное из возможных представлений. Например, если в переменную такого типа записано целое число, превышающее по размеру тип Byte, но меньшее типа Long, то оно будет трактоваться как Integer.

Это особенный тип данных, который имеет ряд преимуществ и недостатков. Преимущества состоят в том, что не нужно заботиться о том, какого типа объявить переменную, возможно избежать множество ошибок, например, когда сначала предполагалась целочисленная переменная типа Byte, а потом оказалось, что после вычислений результат превысил возможные размеры этого типа.

Недостатки:

1. Данные типа Variant требуют больше места в памяти, чем другие типы данных, т.к. память резервируется с запасом.

2. VBA требует, чтобы тип переменной Variant при выполнении при­сваивания приводился в соответствие с типом присваиваемого зна­чения. Этот процесс требует времени, что становится особенно за­метно, если присваивание производится внутри цикла.

3. Использование типа Variant приводит к трудно обнаруживаемым ошибкам, т.к. никогда нельзя быть полностью уверенным в том, ка­кой именно тип имеют данные (например, число может быть распо­знано как строка).

4. Значение даты, взятое из ячейки Excel, может быть интерпретиро­вано как текст.

Итак, типом Variant пользуются только том случае, когда неизвестно данные какого типа будут введены.

Тип данных OBJECT может содержать ссылку на объект. Объект — это совокупность кода и данных, которые воспринимаются как одно целое. Объект может являться частью приложения, как, например, элемент управления или форма. Приложение в целом также может быть объектом.

При создании приложения в Visual Basic, вы постоянно работаете с объектами. Можно использовать объекты, предоставляемые Visual Basic, такие как элементы управления, формы и объекты доступа к данным. Можно также использовать объекты из других приложений в приложении Visual Basic. Можно также создавать собственные объекты и задавать для них дополнительные свойства и методы. Объекты представляют собой готовые блоки будущих программ — они позволяют вновь и вновь использовать единожды написанный код.

 


Переменные

Переменная – это имя участка памяти для хранения в нем данных и доступа к ним. Имя переменной – это ярлык, по которому осуществляется доступ к участку памяти. В переменной VBA могут храниться данные любого типа, определенного в VBA.

Переменные служат для обозначения и хранения определенных данных. Когда VBA встречает в тексте программы имя переменной, при интерпретации программного кода он подставляет на ее место значение, хранящееся в ячейке памяти с таким именем.

Значение переменной может изменяться в течение выполнения программы столько раз, сколько задано алгоритмом программы.

Имена переменным даются разработчиком, но они должны подчиняться следующим правилам:

· Имя переменной начинается с буквы;

· Начиная со второго символа, может следовать любая комбинация букв, цифр и знаков подчеркивания;

· Имя переменной не должно содержать пробелов, точек и символов математических операций;

· Имя переменной не должно превышать в длину 255 символов.

· Имя переменной не должно совпадать ни с одни ключевым словом;

· Имя переменной в пределах одной программы должно быть уникальным.

Регистр символов в имени переменной не имеет значения, т.е. переменные с именами MyVar и myvar будут интерпретированы VBA как одна и та же переменная. Причем, если при объявлении переменной будет записано MyVar, а при дальнейшем использовании – myvar, то VBA автоматически заменит запись на ту, которая присутствует в объявлении. При выборе имен переменных следует руководствоваться смыслом их значений. Например, переменная, обозначающая время может называться time. При этом, необходимо помнить о том, что имя переменной не должно совпадать ни с одним ключевым словом, а ключевые слова все имеют смысловые значения. Например, если вы хотите назвать переменную MsgBox, то это имя уже зарезервировано как имя функции и процедуры, встроенной в VBA. В данном случае необязательно отказываться от выбранного имени, можно просто дополнить его символом подчеркивания, который не несет смысловой нагрузки, но изменяет имя переменной: MsgBox_. Имена переменных, состоящие из нескольких слов, принято записывать одним из следующих способов:

FirstName или first_name

Создание переменных

Самый простой способ создать переменную – это просто упомянуть ее в выражении. VBA создаст переменную и выделит для нее память, как только встретит ее в тексте программы, например, при присваивании переменной значения:

MyVar = 12

Запись значения в переменную называется присваиванием переменной значения. «=» - оператор присваивания, с помощью которого происходит запись значения в ячейку памяти, соответствующую переменной.

Такой способ создания переменной называется неявным объявлениемпеременной. Все переменные, созданные таким способом, имеют тип Variant.

Такое создание переменных хранит опасность, т.к. по ошибке может быть создана переменная с именем уже существующей переменной, тогда VBA вместо создания новой переменной (как это предполагалось разработчиком) изменит значение ранее созданной на новое.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.