Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1_лаб.doc
Скачиваний:
17
Добавлен:
04.11.2018
Размер:
1.26 Mб
Скачать

2 Часть. Программирование с использованием объектов excel.

Разрабатывать приложения в редакторе VBA можно и с использованием объктов приложений Office(объктов EXCEL,WORD и др.) Рассмотрим разработку приложения примера2 с использованием объектов EXCEL. Будем использовать объекты:

  • WORKSHEETS() –для обозначения листа EXCEL

  • RANGE() – для обозначения диапазона ячеек или одной ячейки

  • свойство .Value для обращения к значению ячейки.

Т.е., если мы хотим записать в ячейку значение F программным способом, нужно написать в программе так:

Worksheets().Range().Value = F, где в скобках указать имя или номер листа EXCEL и адрес ячейки. Например, чтобы :

Присвоить ячейке С1

на листе “лист1” значение переменной F

Нужно написать

Worksheets(лист1).Range(“C1”).Value = F

Изменить значение в ячейке A1 на листе “лист1”

WorkSheets(“лист1”).Range(“A1”).Value=3

Установить формулу для ячейки B1 на активном листе

Range(“B1”).Formula = “= - 5 + A1”

Порядок выполнения работы:

  1. В Ячейку А1 ввести текст « Исходные данные»

  2. В ячейку А2 ввести текст «Х=»

  3. В ячейку В2 ввести значение Х.

  4. В ячейку C1 ввести текст «результат при х>0»

  5. В ячейку D1 ввести текст « результат при х<=0»

  6. Выполнить команду СЕРВИС /МАКРОС/РЕДАКТОР VBA

  7. Выполнить команду ВСТАВКА/МОДУЛЬ

  8. Ввести имя модуля SUB LL()

  9. Набрать текст программы:

Sub LL ()

X=Worksheets(1).Range(“B2”).Value

IF Х>0 Then

F=X/2: Worksheets(1).Range(“C2”).Value = F

ELSE

F=(X+1)/2: Worksheets(1).Range(“D2”).Value = F

End If

End Sub

  1. Выполнить программу .

  2. Решить одну из задач самостоятельно (повторить решение своей задачи из части 1данной методички).

  3. Подготовить отчет. Содержание отчета указано в первой части работы.

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

1.Какие объекты Еxcel вы знаете?

2.Как обратиться к ячейке на рабочем листе из программы?

3.Какая форма записи условного оператора была использована в вашей программе?

Лабораторная работа № 5 оператор выбора select case

Цель: Познакомиться с инструкцией With и Select Case, закрепить полученные знания на практике.

Как известно, многие задачи в математике можно разрешить различными способами. В программировании также путь к решению задачи можно найти по-разному. Например, когда в условии задачи часто используется постановка вопроса начиная с если, то в коде программы мы реализуем оператор условия If...Then...Else ., причем ограничения на вложенность этого оператора нет. Если таковых вложенных условий два, три и даже пять, то это не сильно смущает программиста, т.к. программа вполне наглядна и "читаема". Но что делать, когда таких условий десять, пятнадцать? В этом случае для облегчения чтения программы вместо многократно вложенных инструкций If...Then...Else иногда предпочтительнее использовать инструкцию Select Case. В то время как If...Then...Else для каждой инструкции ElseIf оценивает разные выражения, инструкция Select Case оценивает выражение только один раз, в начале управляющей структуры.

Select Case выполняет одну из нескольких групп инструкций в зависимости от значения выражения.

Синтаксис: Select Case <выражение>

[Case <списокВыражений-n>

[инструкции-n]] ...

[Case Else

[инструкции_else]]

End Select

Синтаксис инструкции Select Case содержит следующие элементы:

<выражение> - oбязательный. Любое числовое выражение или строковое выражение.

<списокВыражений-n> - oбязательный при наличии предложения Case. Список с разделителями, состоящий из одной или нескольких форм следующего вида:

  • выражение,

  • выражение To выражение,

  • Is операторСравнения выражение.

Ключевое слово To задает диапазон значений. При использовании ключевого слова To перед ним должно находиться меньшее значение. Ключевое слово Is с операторами сравнения (кроме Is и Like) задает диапазон значений. Если ключевое слово Is не указано, оно вставляется по умолчанию.

<инструкции-n> - Необязательный. Одна или несколько инструкций, выполняемых в том случае, если выражение совпадает с любым компонентом списка <списокВыражений-n>.

<инструкции_else >- Необязательный. Одна или несколько инструкций, выполняемых в том случае, если выражение не совпадает не совпадает ни с одним из предложений Case.

Если выражение совпадает с любым выражением из спискаВыражений в предложении Case, выполняются все инструкции, следующие за данным предложением Case до следующего предложения Case, или, для последнего предложения, до инструкции End Select. Затем управление передается инструкции, следующей за End Select. Если выражение совпадает с выражениями из списка в нескольких предложениях Case, выполняется только первый подходящий набор инструкций.

Предложение Case Else задает список инструкции_else, которые будут выполнены, если не обнаружено ни одно совпадение выражения и компонента списокВыражений ни в одном из остальных предложений Case. Хотя данное предложение не является обязательным, рекомендуется помещать предложение Case Else в блок Select Case, чтобы предусмотреть неожиданные значения выражения. Если ни в одном предложении Case списокВыражений не содержит компонента, отвечающего аргументу выражение, и отсутствует инструкция Case Else, выполнение продолжается с инструкции, следующей за инструкцией End Select.

В каждом предложении Case допускается использование нескольких выражений или диапазонов. Например допустима следующая строка:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Примечание. Следует отличать оператор сравнения Is от ключевого слова Is, используемого в инструкции Select Case.

Имеется также возможность задать диапазоны или несколько выражений для строковых значений. В следующем примере предложение Case выполняется для строк, которые точно совпадают со строкой "все", для строк, лежащих в алфавитном порядке между "орехи" и "яблоки", и для строк со значением, равных текущему значению переменной TestItem:

Case "все", "орехи" To "яблоки", TestItem

Допускаются вложенные инструкции Select Case. Каждой вложенной инструкции Select Case должна соответствовать инструкция End Select.

Пр.: по введенному числу определить день недели

Select Case x

Case 1

MsgBox "Пон-ник"

Case 2

MsgBox "Вторник"

Case 3

MsgBox "Среда"

Case 4

MsgBox "Четверг"

Case 5

MsgBox "Пятница"

Case 6

MsgBox "Суббота"

Case 7

MsgBox "Воскресенье"

Case Else

MsgBox "Такого дня не существует"

End Select

Очень часто, работая с UserForms в VBA с различными объектами, возникает необходимость изменить непосредственно в коде программы не одно и не два, а целый ряд свойств одного и того же объекта в силу каких либо обстоятельств или просто по требованию заказчика (будущего пользователя). В этом случае многие начинающие программисты, изменяя свойства объекта, указывают и его полное имя, что отнимает драгоценное время и место в коде. Например:

Label1.Height = 2000

Label1.Width = 2000

Label1.Caption = "Объект Label1"

Label1.Visible = True

Label1.Enabled =True

Во-избежании этого и существует инструкция WhithEnd With . Whith…End With - выполняет последовательность инструкций над одиночным объектом или определяемым пользователем типом данных.

Синтаксис

With <объект>

[инструкции]

End With

Синтаксис инструкции With содержит следующие элементы:

Элемент описание

объект - Обязательный. Имя объекта или определяемого пользователем типа.

инструкции - Необязательный. Одна или несколько инструкций, выполняемых над объектом.

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

With Label1

.Height = 2000

.Width = 2000

.Caption = "Объект Label1"

.Visible = True

.Enabled =True

End With

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

Допускается создание вложенных конструкций With внутри другого. Однако, поскольку ссылки на объекты внешних блоков With перекрываются во внутренних блоках, необходимо во внутренних блоках With задавать полные ссылки на любой компонент объекта из внешнего блока With.

Внимание! Нельзя выполнять переходы внутрь или из блоков With. Если не выполнены инструкции With или End With, возможно возникновение ошибок или непредсказуемое поведение объектов.

Пример

В данном примере инструкция With используется для выполнения набора инструкций над одним объектом. Объект MyObject и его свойства используются исключительно в иллюстративных целях.

With MyObject

.Height = 100 ' Эквивалентно MyObject.Height = 100.

.Caption = "Привет" ' Эквивалентно MyObject.Caption = "Привет".

With .Font

.Color = Red ' Эквивалентно MyObject.Font.Color = Red.

.Bold = True ' Эквивалентно MyObject.Font.Bold = True.

End With

End With

Задания для выполнения

I Результат выводить на форму в поле, при этом размерами его управлять программно в зависимости от результата.

  1. По введенному числу определить пору года: 1 - зима и т.д.

  2. По введенному числу определить месяц зимы: 1 - декабрь, ...

  3. По введенному числу определить месяц весны: 1 - март, ...

  4. По введенному числу определить месяц лета: 1 - июнь, ...

  5. По введенному числу определить месяц осени: 1 - сентябрь, ...

  6. По введенному числу определить день недели: 1 - понедельник, ...

  7. По введенному числу определить областной город Беларусии: 1 - Брест, ...

  8. По введенному числу определить государственный ВУЗ Могилева.

  9. По введенному числу озвучить оценку:"5" - отлично, ...

II Дополнительное задание(обязательное)

В старояпонском календаре принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначаются названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1924 год – год зеленой крысы – был началом очередного цикла).

Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю.

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

1.Каков принцип работы инструкции Select Case, особенности применения.

2.Когда и как рекомендуется использовать инструкцию With…End With .