Методические указания по выполнению лабораторных работ для студентов экономических и технических специальностей - shikardos.ru o_O
Главная
Поиск по ключевым словам:
Похожие работы
Название работы Кол-во страниц Размер
Методические указания для студентов по проведению лабораторных работ... 2 895.08kb.
Методические указания по выполнению контрольных работ, варианты контрольной... 1 210.61kb.
Методические указания по выполнению лабораторных работ работ по дисциплине 1 661.19kb.
Методические указания по выполнению контрольных работ включают методические... 2 488.03kb.
Методические указания по выполнению контрольных работ №1, 2 Для самостоятельной... 2 257.57kb.
Методические указания по выполнению контрольных работ Для самостоятельной... 2 277.85kb.
Методические указания по выполнению контрольных работ Для самостоятельной... 1 248.58kb.
Учебно-методические материалы по курсу «мировая экономика» для студентов... 4 1212.99kb.
Методические указания для работы «Организация поисково-творческой... 1 361.99kb.
Методические указания к выполнению контрольных работ по дисциплине... 1 357.55kb.
Методические указания к выполнению контрольной работы для студентов... 1 98.43kb.
Современные средства ручного ввода документов 1 243.89kb.
- 4 1234.94kb.
Методические указания по выполнению лабораторных работ для студентов экономических - страница №1/6

Министерство образования Российской Федерации

Владивостокский государственный университет экономики и сервиса

Филиал в г. Находке
ИНФОРМАТИКА

Программирование в Excel и Word на языке VBA

Методические указания

по выполнению лабораторных работ

для студентов экономических

и технических специальностей

Находка


2003

Министерство образования Российской Федерации

Владивостокский государственный университет экономики и сервиса

Филиал в г. Находке
ИНФОРМАТИКА

Программирование в Excel и Word на языке VBA

Методические указания

по выполнению лабораторных работ

для студентов экономических

и технических специальностей

Находка


2003

Утверждено ученым советом филиала ВГУЭС в г. Находке.

Автор-составитель: Глытина К.У.

Руководство разработано в соответствии с государственными об­разовательными стандартами 2-го поколения и предназначено для изу­чения следующих разделов информатики: алгоритмизация и програм­мирование; языки программирования высокого уровня; программное обеспечение и технологии программирования.

Руководство содержит общие сведения о встроенных объектах Excel VBA, их свойствах и методах, справочную информацию об опе­раторах, типах данных, командах и стандартных функциях языка, ука­зания по выполнению лабораторных работ, задания для самостоятель­ной работы студентов, контрольные вопросы.

Рецензент: Давыдов А.В., к.ф.-м.н., доцент кафедры математики и информатики НФ ДВГАЭУ

© Глытина К.У., составление, 2003

© Институт технологии и бизнеса, 2003



ВВЕДЕНИЕ

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

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

В настоящих методических указаниях рассматриваются вопросы технологии программирования на языке VBA (Visual Basic for Applica­tions) в среде табличного процессора Microsoft Excel и текстового ре­дактора Microsoft Word. Этот язык является подмножеством современ­ного объектно-ориентированного языка программирования Microsoft Visual Basic, позволяющего создавать событийно-управляемые прило­жения и предоставляющего широкие возможности визуального про­граммирования. VBA является также базовым языком макрокоманд для других программных средств фирмы Microsoft: Access, PowerPoint и др. Овладение студентами экономических и технических специальностей основами программирования позволит им в полной мере использовать мощные возможности табличного процессора, автоматизировать обра­ботку больших массивов числовой и текстовой информации, создавать гибкие программы со сложной логикой, разрабатывать дружественный интерфейс пользователя.

Настоящее руководство содержит общие сведения о языке VBA, указания к выполнению лабораторных работ, варианты заданий и при­ложения. В каждой лабораторной работе рассматривается пример, при­водится подробное описание порядка выполнения, указывается задание на самостоятельное выполнение, перечисляются контрольные вопросы. Приложения содержат описание объектов Excel VBA, операторов, ти­пов данных, команд и функций работы с числами и строковыми выра­жениями.

ОБЩИЕ СВЕДЕНИЯ

Целью программирования на языке VBA является создание мак­росов, облегчающих работу в среде Excel и Word или написание собст­венных специализированных функций, предназначенных для решения конкретных задач пользователя.



Макрос - это программа, выполняющая действия с электронны­ми таблицами, группой ячеек, одной конкретной ячейкой или фрагмен­том текстового документа. Результатом работы макроса обычно являет­ся изменение содержания или вида ячеек электронной таблицы, текста. Примером макроса, встроенного в Excel, является команда Фор­мат/Ячейки, после выполнения которой изменяются форматы выделен­ных ячеек.

Программа, предназначенная для вычисления одного значения, называется функцией. Функции, как правило, работают с содержимым ячеек, а не с их видом. Значение, вычисленное функцией пользователя, можно использовать в формулах так же, как и значения обычных функ­ций Excel.

Программирование на языке VBA основывается на четырех основных понятиях: объект, переменная, оператор и команда.

Объектами в Excel является все то, с чем работает пользователь электронной таблицы - рабочие книги, электронные таблицы, ячейки и т.д. Каждый объект обладает рядом признаков, описывающих объект или характеризующих состояние объекта. Эти признаки называются свойствами объекта. Например, одним из свойств рабочего листа элек­тронной таблицы является имя листа. К свойствам ячейки относятся содержимое ячейки, формула и различные параметры форматирования ячейки.

Объекты могут содержать другие объекты. Книга Excel содержит рабочие листы. В свою очередь, рабочие листы содержат ячейки. В це­лом, все объекты Excel образуют строгую иерархию. На рис. 1 приведе­на структура объекта ActiveCell ("Текущая ячейка").

При обращении к какому-либо свойству конкретного объекта используется следующий синтаксис:

<Объект>.<Свойство объекта>.

Например, чтобы прочитать формулу, содержащуюся в текущей ячейке, нужно написать ActiveCell.Formula. Здесь ActiveCell - объект, a Formula - его свойство.

Некоторые объекты являются составной частью других объектов. Так, объект Interior ("Заливка") может относиться к текущей ячейке, диапазону ячеек или к ячейке электронной таблицы, находящейся на другом листе рабочей книги. Чтобы уточнить, какую именно заливку

мы имеем в виду, необходимо указать принадлежность объекта Interior. Принадлежность объекта указывается соответствующей приставкой перед именем объекта:



<Принадлежность>.<Объект>.<Свойствообъекта>.

Например, цвет заливки текущей ячейки обозначается следую­щим образом: ActiveCell.Interior.Color. Наиболее употребительные объ­екты Excel и их свойства приведены в приложении А.




Рис. 1. Структура объекта ActiveCell


Кроме свойств, у объектов есть ряд методов. Метод - это дейст­вие, применяемое к объекту. Например, одним из методов для объекта Range (Диапазон) является ClearContents (Очистить содержимое). Этот метод позволяет очистить содержимое диапазона. При обращении к какому-либо методу конкретного объекта используется следующий синтаксис:

<Объект>.<М етод объекта>.

Например: Range("Al:A10").ClearContents.

Язык Visual Basic for Applications позволяет разрабатывать собы-тийно-управляемые приложения. Событие - действие, распознаваемое объектом (формой или элементом управления). Событийно-управляемое приложение выполняет код VBA в ответ на события. С каждой формой и элементом управления связан стандартный набор событий. Если происходит одно из этих событий и в соответствующей процедуре обработки события имеется код, VBA вызывает этот код. Например, большинство объектов распознает событие Click - если пользователь щелкнет командную кнопку или на поле формы, выполня­ется код, внесенный в процедуру события Click, соответственно, кноп­ки и формы.

Событие может быть вызвано пользователем (например, нажатие клавиши), системой (например, событие таймера) или программным кодом.



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

Переменные характеризуются своим именем. Имя переменной должно всегда начинаться с буквы или знака подчеркивания, может содержать знаки подчеркивания и быть длиной до 255 символов. Имена переменных не должны содержать внутри себя пробелы. Если нужно составить имя переменной из нескольких слов, слова объединяются знаками подчеркивания.

Примеры имен переменных:

1) I


  1. ABC

  2. Адрес_Ячейки


Операторы производят действия с объектами и переменными. Операторы делятся на арифметические, логические, текстовые и опера­торы сравнения. Все операторы VBA аналогичны операторам в форму­лах Excel. Например, к арифметическим относятся следующие операто­ры: "+" - сложение, "-" - вычитание, "*" - умножение, "/" - деление. Таким образом, запись 1+100 означает, что к переменной I добавляется 100. Полный список операторов приводится в приложении В.

Для управления вычислительным процессом используются команды. Они предписывают, куда поместить результат вычислений, позволяют проверять данные по какому-либо условию, организовывают циклические вычисления. К примеру, по команде присваивания А=В+10 результат сложения В+10 будет записан в переменную А.

Команды делятся на описательные и исполнительные. Описа­тельные команды не приводят к выполнению каких-либо действий с переменными или объектами. Они служат для определения, какие именно переменные используются при вычислении (команда определе­ния переменных Dim), где начинаются и где заканчиваются вычисления (команды организации макросов и функций Sub... End Sub, Function...End Function) и т.п. Исполнительные команды служат для непосредственной организации вычислительного процесса. Это коман­ды присваивания (=), организации циклов (For...Next, Do...Loop), вы­полнения действий по условию (If...Then...Else, Select Case...End Select). Каждая такая команда либо изменяет содержимое переменной или состояние объекта, либо направляет вычисления по определенной ветви. В приложении D приведены основные команды VBA.

ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ VBA

Для разработки макросов и функций используется специальная среда программирования. Для перехода в нее из Excel или Word нужно выполнить команду "Сервис/Макрос/Редактор Visul Basic", либо нажать клавиши +. Вернуться обратно можно через панель задач или по +.

Среда программирования представлена системой меню, панелей управления и трех основных окон. Надо отметить, что пользователь имеет возможность менять вид и состав среды разработки, настраивая ее так, как ему удобно. Среди окон выделим окно редактирования тек­стов программ, в котором происходит основная работа по написанию и отладке макросов и специализированных функций пользователя. Оно появляется после добавления модуля пользователя и располагается в правой части экрана. Запись команд, составляющих макросы и функ­ции, выполняется в этом окне с помощью редактора программ.

Редактор программ VBA - это обычный текстовый редактор, об­ладающий стандартным набором возможностей типичного текстового редактора (например, WordPad). Однако он дополнен рядом специали­зированных функций. Например, его можно настроить таким образом, чтобы при написании пользователем части служебного слова он мог самостоятельно дополнять это слово. Это, с одной стороны, ускоряет ввод текста команд, а с другой — уменьшает вероятность ошибок. Слу­жебные слова можно писать буквами одного размера - например, строч­ными. При переходе на другую строку, если в команде не было допущено ошибок, все служебные слова, имена встроенных функций, объектов и их свойств автоматически записываются правильно. Например, если напи­сать "activesheet", то при переходе на другую строку это слово будет пре­образовано в "ActiveSheet". Такая возможность обеспечивает дополнительный контроль правильности написания служебных слов.

Назначение большинства кнопок на панели управления и пунк­тов меню среды разработки очевидно и не требует дополнительных пояснений. Если вопросы все-таки возникают, можно воспользоваться обширной и полной системой помощи, которая доступна по команде "?/Содержание и предметный указатель". Для доступа к справке по раз­делу собственно программирования в Excel (команды VBA, объекты, функции и т.п.) в системе помощи выберите пункт "Справочник по Microsoft Excel Visual Basic". Кроме этого, при изучении рекомендуется использовать литературу, приведенную в данном руководстве.

ЛАБОРАТОРНАЯ РАБОТА №1

ЗНАКОМСТВО СО СРЕДОЙ ПРОГРАММИРОВАНИЯ EXCEL VBA

Цель: Получить первоначальные навыки работы в среде программиро­вания Excel VBA. Научиться обращаться к значениям ячеек и состав­лять простейшие макросы для обработки ячеек.

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ


  1. Перейдите в среду программирования VBA (команда "Сер­вис/Макрос/Редактор Visual Basic", либо нажать клавиши +).

  2. Вид среды программирования VBA приведен на рис. 1.1. Изучите
    меню команд и панель управления. Для получения описания команд
    меню и кнопок панели управления воспользуйтесь командой
    "?/Содержание и предметный указатель".

  3. Добавьте в рабочую книгу новый модуль ("Вставка/Модуль").

  4. Создайте макрос, который меняет местами содержимое ячеек А1 и В1.
    Для этого в окне редактирования модуля наберите следующие команды:

Public Sub Обмен_А1_В1()

Dim A


А = ActiveSheet.Range("Al")

ActiveSheet.Range("Al") = ActiveSheet.Range("Bl") ActiveSheet.Range("Bl") = A

End Sub


  1. Вернитесь обратно в Excel, используя Панель Задач Windows.

  2. Введите разные значения в ячейки А1 и В1 текущей рабочей
    таблицы (например, поместите в А1 число 100, а в В1 - любой текст).

  3. Выполните макрос Обмен_А1_В1 по команде "Сервис/Макрос/ Макросы/Обмен_А1_В1/Выполнить". Проследите, как изменились значения ячеек А1 и В1.

  4. Назначьте клавиши ++ для выполнения макроса
    (команда "Сервис/Макрос/Макросы/Параметры/Сочетание клавиш").
    Выполните макрос, нажав эти клавиши. Что при этом происходит?

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

Public Sub Обмен_А1_В1()

Dim A


A = Range("Al")

Range("Al") = Range("Bl") Range("Bl") = A

End Sub



Р ис. 1.1. Вид среды программирования VBA


  1. Вернитесь в Excel и выполните макрос по сочетанию клавиш
    ++. Объясните, в чем отличие нового макроса и каким
    образом он работает.

  2. Замените объекты Range в тексте макроса на объекты Cells. Для это­го вместо Range("Al") запишите Cells(l, 1), а вместо Range("Bl") -
    Cells(l,2).

  3. Проверьте правильность замены объектов путем запуска нового
    макроса.

  4. Назовите макрос по-другому: в команде "Public Sub" замените "Об-
    мен_А1_В1" на "Новый_макрос".

  5. Просмотрите список макросов ("Сервис/Макрос/Макросы"). Выпол­ните макрос, нажав кнопку "Выполнить".

Контрольные вопросы:

  1. Какие окна имеются в среде программирования VBA? Для чего
    предназначено каждое окно?

  2. Каково назначение пунктов меню "Правка", "Вид", "Вставка" и "За­пуск"?




  1. Что такое макрос? Каким путем можно выполнить готовый макрос
    в Excel?

  2. Какие объекты Excel использовались в данной лабораторной работе?
    Что означает каждый объект?

  3. Какие команды обозначают начало макроса и его окончание?

  4. Как изменить название макроса?

  5. Для чего в макросе была использована переменная А?

  6. Что означает команда Range("Al") = Range("BI")?

  7. Какому объекту Range (Range("Al") или Range("Bl")) соответствует
    объект Cells( 1,2)?


ЛАБОРАТОРНАЯ РАБОТА №2

СОЗДАНИЕ НОВЫХ ДИАЛОГОВЫХ ОКОН

НА ОСНОВЕ ФОРМ ПОЛЬЗОВАТЕЛЯ

Цель: Изучить способы ввода-вывода данных, свойства встроенных объектов VBA: форм, стандартных элементов управления "Надпись", "Поле" и "Кнопка".

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

1. В данной лабораторной работе необходимо создать форму поль­зователя, разместить на ней элементы управления "Надпись" и "Кнопка" и изменить некоторые заданные по умолчанию свойства объектов. Для этого:

а) перейдите из Excel в среду программирования VBA;

б) добавьте к проекту форму (команда "Вставка/UserForm"). По­сле выполнения этой команды на экране появляется стандартная форма и панель инструментов "Элементы управления" (рис. 2.1);



Рис. 2.1. Вид стандартной формы и панели "Элементы управления"


в) на панели элементов выберите элемент управления "Надпись" и разместите его на форме;

г) на панели элементов выберите элемент управления "Кнопка" и разместите его на форме;

д) измените в окне свойств исходные значения свойств объектов
(табл. 2.1).

Таблица 2.1

Задание свойств объектов



Имя

объекта

Имя

свойства

Значение свойства

Описание свойства

UserForm 1 (Форма)

Caption

Первая форма

заголовок формы



StartUpPosition

2-CenterScreen

начальное положение формы при запуске

UserForm 1 (Форма)


Font



Times New Roman

название шрифта

Полужирный

начертание

11

размер шрифта

Label 1 (Надпись)

Caption

Hello, World!!!

текст надписи

Command Button 1 (Кнопка)

Caption

изменить надпись

текст на кнопке

Теперь форма выглядит иначе (рис. 2.2).

2. Выполните запуск приложения VBA (кнопка "Запуск подпрограм­мы / UserForm", либо клавиша F5). После просмотра формы завершите


работу приложения с помощью кнопки "Закрыть" в правом верх­нем углу формы.

3. Напишите код процедуры для обработки события Click элемен­та "Кнопка". Для этого:

а) выберите на форме эле­мент "Кнопка";

б


Рис. 2.2. Вид пользовательской

формы после изменения

свойств
) перейдите в режим ввода программного кода (команда "Вид / Программа", либо клави­ша F7). VBA автоматически ге­нерирует шаблон для ввода кода процедуры:

Private Sub CommandButtonl_Click()

End Sub

в) наберите код процедуры между операторами Private Sub ... и End Sub следующим образом:



Private Sub CommandButtonl_Click()

' Установить новое значение свойства Caption

' элемента "Надпись" (с именем Label 1)

Label I .Caption = " Здравствуй, мир !!!"

End Sub


  1. Выполните запуск приложения.

  2. Нажмите левую кнопку мыши на элементе "Кнопка". Обратите
    внимание, как при этом изменился текст надписи.

  3. Добавьте к проекту вторую форму. Ее свойство Name автоматиче­ски устанавливается в значение UserForm2.

  1. Разместите на ней два элемента "Надпись", два элемента "Поле" и два элемента "Кнопка". Эле­менты управления "Поле" служат для ввода в программу следующих дан­ных о Вас: фамилия и возраст. Измените свой­ства объектов, чтобы форма имела вид, представленный на рис. 2.3.

  2. Н
    Рис. 2.3. Вид второй

    пользовательской формы

    апишите для собы­тия Click первого эле­мента "Кнопка" (с име­нем CommandButtonl) код процедуры:

Private Sub CommandButtonl_CHck()

Dim strVarl As String, strVar2 As String

strVarl = "": strVar2 = ""

' Занести в переменную strVarl текст из первого поля

strVarl =TextBoxl.Text

' Занести в переменную strVar2 текст из второго поля

strVar2 = TextBox2.Text

'Функция MsgBox служит для вывода сообщений из программы

MsgBox "Ваша фамилия" & strVarl & _

". Вам сейчас " & strVar2

End Sub


9. Напишите для события Click второго элемента "Кнопка" (с име­нем CommandButton2) код процедуры:

Private Sub CommandButton2_Click()

End

End Sub


  1. Выполните запуск приложения (при этом форма UserForm2 долж­на быть активной).

  2. Введите в первом окне "Поле" (с именем TextBoxl) Вашу фами­лию, во втором окне "Поле" (с именем TextBox2) Ваш возраст.

  3. Нажмите левую кнопку мыши на элементе "Кнопка" (с именем
    CommandButtonl). Проверьте текст полученного сообщения.

  4. Завершите работу приложения с помощью кнопки CommandButton2.

Контрольные вопросы:

  1. Какое окно в среде программирования VBA предназначено для
    отображения структуры проекта? Что входит в состав вашего проекта?

  2. Какие встроенные объекты VBA использовались в данной лабора­торной работе?

  3. Каково назначение форм пользователя, элементов управления
    "Надпись", "Поле", "Кнопка"?

  4. Что такое "свойство объекта"? Какое окно в среде программирова­ния VBA предназначено для отображения свойств выбранного объекта?

  5. Какие свойства и для каких объектов вы использовали в лабора­торной работе?

  6. Приведите примеры обращения в программе к свойствам элемен­тов "Надпись", "Поле".

  7. Понятие события. Какое событие генерируется в системе, если во
    время выполнения проекта перевести указатель мыши на элемент
    "Кнопка" и нажать левую кнопку мыши?

ЛАБОРАТОРНАЯ РАБОТА №3

КОМАНДЫ ВЫПОЛНЕНИЯ ДЕЙСТВИЙ ПО УСЛОВИЯМ

Цель: Научиться составлять программы с проверкой условий. Изу­чить различные формы команды If.

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

1. Составьте макрос для решения следующей задачи: Даны действи­тельные числа х и у. Присвоить переменной z значение х — у, если х >у; в противном случае присвоить z значение у — х + 1. Для этого:

а) перейдите из Excel в среду программирования VBA;

б) добавьте к проекту форму;

в) разместите на форме 3 элемента "Надпись" (Labels предназна­чен для вывода результата), 2 элемента "Поле" (TextBoxl - для ввода х, TextBox2 — для ввода у) и 2 элемента "Кнопка";

г) свойство BorderStyle (стиль рамки) элемента "Надпись" с име­нем LabeB установите в значение 1; измените значения других свойств объектов так, чтобы форма имела вид, представленный на рис. 3.1.



Рис. 3.1. Вид пользовательской формы

2. В окне редактирования модуля наберите для события Click перво­го элемента "Кнопка" (с именем CommandButtonl) код процедуры: Private Sub CommandButtonl_Click()

Dim x As Single, у As Single, z As Single

' Функция Val преобразует вводимое значение из текстового

' формата в числовой

х = Val(TextBoxl.Text)

у = Val(TextBox2.Text)

If х > у Then z = х - у Else z = у - х + 1

Label3.Caption = "Результат z= " & z

End Sub

3. Напишите для события Click второго элемента "Кнопка" (с име­нем CommandButton2) код процедуры:



Private Sub CommandButton2_Click()

End


End Sub

  1. Выполните запуск приложения (при этом форма UserForml должна быть активной).

  2. Введите в первом окне "Поле" (с именем TextBoxl) значение х
    (например, число 5), во втором окне "Поле" (с именем TextBox2)
    значение у (например, число 2).

  3. Нажмите левую кнопку мыши на элементе "Кнопка" (с именем
    CommandButtonl). Проверьте полученный результат.

  4. Повторите пп. 5 и 6 для нескольких различных значений х и у.

  5. Завершите работу приложения с помощью кнопки CommandButton2.

  6. Разработайте форму пользователя UserForm2, аналогичную при­
    веденной на рис. 3.1, но для ввода трех чисел (каждое число вводится
    в своем поле): разместите на форме 4 элемента "Надпись", 3 элемента
    "Поле" и 2 элемента "Кнопка", задайте необходимые значения
    свойств элементов.

  7. Составьте макрос для решения следующей задачи: Даны действи­тельные числа а, b, с. Подсчитать количество и сумму нечетных чисел среди трех чисел а, b, с. Для этого в окне редактирования модуля формы UserForm2 наберите код процедуры:

Private Sub CommandButtonl_Click()

Dim a As Single,b As Single,c As Single

Dim k As Integer, sum As Single

' Свойство Text элемента "Поле" является свойством по

' умолчанию, т.е. при обращении к этому свойству можно не

' указывать его после точки. Таким образом, записи

' х = Val(TextBox I .Text) и х = Val(TextBoxl) равноправны

а = Val (TextBoxl)

b= Val (TextBox2)

c= Val (TextBoxS)

k=0 ' Переменная для подсчета количества

sum=0 ' Переменная для подсчета суммы

If a mod 2  0 Then k=k+l: sum=sum+a

If b mod 2 0 Then k=k+l: sum=sum+b

If с mod 2  0 Then k=k+l: sum=sum+c

LabeM.Caption = "Количество нечетных чисел равно " & k

& " Сумма нечетных чисел равна " & sum

End Sub


  1. Проверьте работу макроса для нескольких различных комбинаций
    чисел а, b, с.

  2. Разработайте самостоятельно форму пользователя и напишите
    макросы для решения задач из числа приведенных в приложении G
    согласно своего варианта. Возможно, Вам понадобятся функции ра­боты с числами, описанные в приложении Е. Проверьте работу
    макросов для трех - четырех различных комбинаций исходных дан­ных. Текст макросов, контрольные примеры и результаты приведите
    в отчете по лабораторной работе.

Контрольные вопросы и задания:

  1. Для чего используется свойство Caption элемента "Надпись"?

  2. Каково назначение функции Val?

  3. Является ли обязательным элемент Else в структуре команды If?

  4. Каким образом в программе записываются комментарии?

  5. Какое значение ("истина" или "ложь") является результатом операции сравнения m <= n при m = 3 и n = 4?

  6. Что означает команда k = k + 1?

  7. Как работает команда sum = sum + a?

  8. Объясните назначение команд составленного Вами макроса.

ЛАБОРАТОРНАЯ РАБОТА №4

ОРГАНИЗАЦИЯ МНОГОЗНАЧНЫХ

ВЕТВЛЕНИЙ В ПРОГРАММЕ

Цель: Научиться осуществлять выбор из нескольких возможных ва­риантов с помощью команды Select Case, применять элемент "Спи­сок" для обработки различных списков данных.

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

1. Составьте макрос, который запрашивает по отдельности день, месяц и год, затем из введенных значений формирует текстовую строку (например, "Сегодня 1 Мая 2002 года") и выводит ее на экран. Для этого:

а) в среде Excel VBA добавьте к проекту форму;

б) разместите на форме 4 элемента "Надпись" (один из них, пред­назначенный для вывода результата, должен иметь имя Result),


2 элемента "Поле" (TextBoxl - для ввода дня, TextBox2 - для ввода
года), 1 элемент "Список" (для выбора месяца из списка; его имя по
умолчанию ListBoxl измените на Listl) и 2 элемента "Кнопка";

в) свойство BorderStyle элемента "Надпись" с именем Result ус­тановите в значение 1; измените значения других свойств объектов


так, чтобы форма имела вид, представленный на рис. 4.1;
Рис. 4.1. Вид пользовательской формы для работы с датой
г) в окне редактирования модуля напишите код процедуры для
обработки события Activate формы (событие Activate происходит,
когда форма становится активной). Данная процедура заполняет спи­сок Listl (метод Addltem добавляет строку в список):

Private Sub UserForm_Activate()

Listl.Addltem "Январь"

Listl.Addltem "Февраль"

Listl.Addltem "Март"

Listl.Addltem "Апрель"

Listl.Addltem "Май"

Listl.Addltem "Июнь"

Listl.Addltem "Июль"

Listl.Addltem "Август"

Listl.Addltem "Сентябрь"

Listl.Addltem "Октябрь"

Listl.Addltem "Ноябрь"

Listl.Addltem "Декабрь" End Sub

д) напишите код процедуры для обработки события Click элемен­та "Кнопка" с именем CommandButtonl:

Private Sub CommandButtonl_Click()

' В макросе используются следующие переменные:

' index - порядковый номер выбранной в списке строки

' mes - наименование месяца

Dim index As Integer, mes As String

If TextBoxl = "" Then _

MsgBox "Вы забыли указать день": Exit Sub

If Val (TextBoxl) < 1 Or Val (TextBoxl) > 31 Then _

MsgBox "Неверен день месяца": Exit Sub

' Свойство Listlndex элемента "Список" содержит

' порядковый номер выбранной в списке строки.

' Строки в списке нумеруются, начиная с 0. Если не выбрана ни

' одна строка, свойство Listlndex имеет значение -1

index = Listl.Listlndex

If index = -1 Then _

MsgBox "Вы забыли выбрать месяц": Exit Sub

If TextBox2 = "" Then _

MsgBox "Вы забыли указать год": Exit Sub

Result.Caption = ""

Select Case index

Case 0: mes = "января"

Case 1: mes = "февраля"

Case 2: mes = "марта"

Case 3: mes = "апреля"

Case 4: mes = "мая"

Case 5: mes = "июня"

Case 6: mes = "июля"

Case 7: mes = "августа"

Case 8: mes = "сентября"

Case 9: mes = "октября"

Case 10: mes = "ноября"

Case 11: mes = "декабря"

End Select

Result = "Сегодня " & TextBoxl & " " & mes & " " & _

TextBox2 & " года"

End Sub

e) напишите код процедуры для обработки события Click элемен­та "Кнопка" с именем CommandButton2:



Private Sub CommandButton2_Click()

End


End Sub

  1. Выполните запуск приложения (при этом форма UserForml должна быть активной).

  2. Введите в первом окне "Поле" (с именем TextBoxl) день, во вто­ром окне "Поле" (с именем TextBox2) год, выберите в списке месяц.
    В макросе предусмотрена обработка следующих ситуаций: не введен
    день или год; введен несуществующий номер дня; не выбран ни
    один месяц в списке.

  3. Нажмите левую кнопку мыши на элементе "Кнопка" (с именем
    CommandButtonl). Проверьте полученный результат.

  4. Повторите пп. 3 и 4 для нескольких различных исходных данных.

  5. Завершите работу приложения с помощью кнопки CommandButton2.

  6. Самостоятельно разработайте приложение для регистрации уча­стников межвузовской конференции. Приложение запрашивает фа­милию участника, город (выбирается из списка; если нет в списке, то можно ввести в текстовом окне), должность (выбирается из списка: профессор, доцент, старший преподаватель, преподаватель, асси­стент, студент), затем из введенных данных формирует текстовую строку (например, "Иванов В.А., доцент, Хабаровск") и заносит ее в список. В приложении должна быть предусмотрена возможность удаления строки из списка. Для этого:

а) добавьте к проекту форму UserForm2;

б) разместите на форме 3 элемента "Надпись", 1 элемент "Поле"


(для ввода фамилии), 2 элемента "Список" (первый - для выбора
должности, второй - для формирования результата - списка участников), 1 элемент "Поле со списком" (комбинированное окно для ввода или выбора города из списка) и 2 элемента "Кнопка" (первый – для занесения строки в список, второй - для удаления отмеченной строки из списка);

в) измените значения свойства Name элементов (табл.4.1);



Таблица 4.1

Новые имена объектов



Имя объекта

Значение свойства Name

TextBoxl (Поле)

Textl

ListBoxl (Список)

Listl

ComboBoxl (Поле со списком)

Combo 1

ListBox2 (Список)

Result

г) измените значения других свойств элементов так, чтобы форма
имела вид, представленный на рис. 4.2;

д) напишите код процедур (предусмотрите в макросе обработку


следующих ситуаций: не введена фамилия; не указан город; не выбра­на в списке должность; не отмечена строка в списке при удалении);

е) выполните запуск приложения, проверьте его работу для


нескольких различных исходных данных. Текст процедур приведите
в отчете по лабораторной работе.

Рис. 4.2. Вид пользовательской формы в приложении

"Регистрация участников конференции"

Контрольные вопросы и задания:


  1. Каково назначение оператора "&"?

  2. Как изменяется внешний вид элемента "Надпись" при установке
    его свойства BorderStyle в значение 1 ?

  3. Какое действие выполняет метод Addltem элемента "Список"?

  4. Каково назначение свойства Listlndex элемента "Список"?

  5. Какой метод элемента "Список" используется для удаления стро­ки из списка?

  6. Чем отличаются функции элементов управления "Список" и "По­ле со списком"?

  7. Объясните назначение команд составленных Вами макросов.



ЛАБОРАТОРНАЯ РАБОТА №5 КОМАНДЫ ОРГАНИЗАЦИИ ЦИКЛОВ

Цель: Изучить основные принципы составления циклических про­грамм в Excel VBA. Научиться обращаться к ячейкам выделенного диапазона.

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

1. Составьте макрос, заполняющий выделенную строку ячеек после­довательностью чисел 1,2, ... N, где N - количество ячеек. Например, на рис. 5.1 представлен результат выполнения макроса в случае, если выделен диапазон ячеек В2:Е2.







А

В

С

D

Е

F

1



















2




1

2

3

4




3



















Рис. 5.1. Заполнение программным путем диапазона В2:Е2

Для этого:

а) перейдите из Excel в среду программирования VBA;

б) добавьте модуль и в окне редактирования модуля наберите


следующие команды:

Public Sub Заполнение_строки()

' В макросе используются следующие переменные:

' Nколичество ячеек в строке,

' i - номер текущей колонки,

' k - число, записываемое в ячейку

Dim N As Integer, i As Integer, k As Integer

N = Selection.Columns.Count

k=l

For i = 1 To N



Selection.Cells(l,i) = k

k = k+l


Next i

End Sub


2. Вернитесь в Excel, выберите диапазон ячеек A2:D2 и выполните макрос. Ответьте на следующие вопросы:

  • Как выглядит таблица после работы макроса?

  • Чему будет равна переменная k перед записью в ячейку С2?

  • Какое значение переменной / соответствует ячейке с адресом В2?

  1. Дополните макрос возможностью закраски заполняемых ячеек
    зеленым цветом. Для этого после команды " Selection.Cells(l, i) = k"
    вставьте команду " Selection.Cells(l, i).Interior.Color = vbGreen"

  2. Вернитесь в Excel и проверьте работу макроса, выбрав ячейки
    В1:С1.

  3. Самостоятельно составьте макрос "Заполнение_колонки", который будет заполнять ячейки выделенной колонки последовательны­ми числами от 1 до М, где М - количество ячеек. Так, на рис. 5.2 представлен результат выполнения макроса в случае, если выделен диапазон ячеек В2:В5.







А

В

С

1










2




1




3




2




4




3




5




4




6










Рис. 5.2. Заполнение программным путем диапазона В2:В5

При разработке макроса учтите, что:



  • Количество ячеек в столбце определяется количеством строк
    выбранного диапазона, поэтому вместо .Columns.Count используйте
    .Rows.Count.

  • В объекте Cells(i, j) i определяет № строки, a j№ колонки.
    Поскольку макрос должен работать только с одной колонкой, в цикле
    нужно обращаться к объекту Cells(i, 1).

6. Запишите составленный макрос в модуль, выделите в таблице диапазон ячеек ВЗ:В5 и выполните макрос. Каким образом теперь выглядит таблица? Текст макроса приведите в отчете по лаборатор­ной работе.

Контрольные вопросы и задания:

  1. Какой объект служит для обращения к выделенному диапазону ячеек?

  2. Как найти количество строк и колонок выделенного диапазона?

  3. Что означает запись "Selection.Cells(3, 1)"?

  4. Сколько раз выполнится команда "Selection.Cells(l, i) = k" внутри цикла "For i = 1 То N ... Next i"? Какие действия она выполняет?

  5. Что означает команда k = k + I?

  6. Объясните назначение команд составленного вами макроса.

ЛАБОРАТОРНАЯ РАБОТА №6

ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ

Цель: Освоить составление циклических программ с вложенными циклами.

УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ

1. В данной лабораторной работе необходимо составить макрос, ко­торый в выделенном диапазоне ячеек подсчитывает количество по­ложительных, нулевых и отрицательных значений, записывает ре­зультаты в смежную с диапазоном колонку и выделяет цветом ячейки с положительными значениями. Например, на рис. 6.1 представлен результат выполнения макроса в случае, если выделен диапазон ячеек В2:С5.






А

В

С

D

Е

1
















2




1,5

-21

3

Количество положительных значений

3




0

6

2

Количество нулевых значений

4




9

0

3

Количество отрицательных значений

5




11

-7







Рис. 6.1. Результаты обработки диапазона В2:С5

Для этого:

а) перейдите из Excel в среду программирования VBA;

б) добавьте в рабочую книгу новый модуль и в окне редактиро­вания модуля наберите команды:

Public Sub Диапазон_ячеек()

' В макросе используются следующие переменные:

' КР - количество положительных значений

' KNколичество нулевых значений

' КО — количество отрицательных значений

' NR - число строк в выделенном диапазоне

' NCчисло колонок в выделенном диапазоне

' NumO/Row - номер строки первой ячейки диапазона

' NumOfCol - номер колонки первой ячейки диапазона

' Item - значение текущей ячейки

' i - номер текущей строки диапазона

' j - номер текущей колонки диапазона

Dim КР As Integer, KN As Integer, КО As Integer

Dim NR As Integer, NC As Integer

Dim NumOfRow As Integer, NumOfCol As Integer
Dim Item As Variant, i As Integer, j As Integer
NR = Selection.Rows.Count
NC = Selection.Columns.Count
NumOfRow = Selection.Row
NumOfCol = Selection.Column
' Цикл For i... Next i является внешним по
' отношению к циклу Forj ... Nextj
For i = 1 To NR ' Цикл по строкам

' Цикл Forj ... Nextj является вложенным

' по отношению к циклу For i... Next i

Forj = 1 To NC ' Цикл по колонкам

Item = Selection.CeIls(i, j)

If IsNumeric(Item) Then ' Если значение в ячейке - числовое

If Item > 0 Then

КР = КР+1

Selection.Cells(i, j).Font.Color = vbRed

End If


If Item = 0 Then KN = KN + 1

If Item < 0 Then КО = КО + 1

End If

Nextj


Next i

' Запись результатов на рабочий лист

' в смежную с выделенным диапазоном колонку Cells(NumOfRow, NumOfCol + NC) = КР

Cells(NumOfRow, NumOfCol + NC + 1) = _

"Количество положительных значений" Cells(NumOfRow + 1, NumOfCol + NC) = KN Cells(NumOfRow + 1, NumOfCol + NC + 1) = _

"Количество нулевых значений"

Cells(NumOfRow + 2, NumOfCol + NC) = КО Cells(NumOfRow + 2, NumOfCol + NC + 1) = _

"Количество отрицательных значений"

End Sub


  1. Вернитесь в Excel, заполните различными данными диапазон ячеек A2:D6, выделите диапазон и выполните макрос. Как выглядит
    таблица после работы макроса?

  2. Цикл Forj = 1 То NC ... Nextj является вложенным по отноше­нию к циклу For i = 1 То NR ... Next i. Это означает, что вначале будут последовательно перебираться ячейки с номерами (1, 1), (1, 2) ... (1, NC) при i = 1, затем - (2, 1), (2, 2) ... (2, NC) при i = 2 ..., и т.д. до ячеек с номерами (NR, 1), (NR, 2) ... (NR, NC) при i = NR. Какое значение переменных i и] соответствует ячейке с адресом ВЗ?

  1. Самостоятельно составьте макросы для решения задач из числа
    приведенных в приложении G согласно своего варианта.

  2. Запишите составленные макросы в модуль, заполните различ­
    ными данными диапазон ячеек СЗ:Е7 для первого макроса и G2:J5
    для второго макроса и выполните каждый макрос, предварительно
    выделив нужный диапазон. Текст макросов, контрольные примеры и
    результаты приведите в отчете по лабораторной работе.


следующая страница >>