Файл: Лабораторная работа 3 Работа с диапазонами ячеек (объекты Range, Calls).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 130
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Функция(аргумент)
Действие
Second(D)
Возвращает целое, содержащее секунды как часть времени, содержащегося в выражении типа Date. Секунды возвращаются как число между 0 и 59. Если аргумент не содержит значения времени, то возвращается 0
DateSerial(N,
N,N)
Возвращает значение последовательной даты для заданной даты. Слева направо аргументы представляют год (целое число от 100 до 9999), месяц (от 1 до 12) и день (от 1 до
31)
TimeSerial(N,
N,N)
Возвращает значение последовательного времени. Слева направо аргументы представляют часы (целое число от 0 до 23), минуты (от 0 до 59) и секунды (от 0 до 59)
DateValue(E)
Возвращает значение типа Date, эквивалентное дате, заданной аргументом Е, который может быть строкой, числом или константой, представляющей время
TimeValue(E)
Возвращает значение типа Date, содержащее время, заданное аргументом Е, который может быть строкой, числом или константой, представляющей время
Timer
Возвращает число, представляющее количество секунд от полуночи в соответствии с системным временем компьютера
Пример 1. Время в VBA описывается оператором Time. Поэтому если написать в окне VB следующий код:
Sub Tekuchee_Time()
MsgBox Time, vbInformation, "
Текущее время"
End Sub то при его выполнении нам появится
информационное сообщение
, на котором будет изображено текущее время.
5.
Строковые функции
Строковые функции VBA часто применяются для нахождения заданных строк внутри других строк, для сравнения одной строки с другой и копирования вы бранных частей строк. С троковые функции VBA используются довольно часто, потому что строковые данные очень важны и встречаются в каком приложении VBA — Word, Exccl, Access или другом hоst- приложении VBA.
Часто необходимо манипулировать строковыми данными, полученными как пользовательский ввод функцией lnputBox
В других случаях строковые данные появляются в коде VBA как имена файлов для документов Word, рабочих книг Excel, баз данных Access и других типов данных, сохраняемых в
28
файлах на дисках.
В Word важность манипулирования строковыми данным и очевидна: данные, сохраняемы е в документах Word, в основном являются ничем иным, как строковыми данными. Строковые данные также важны в Excel в качестве имен рабочих листов, именованных диапазонов данных и так далее. В этом разделе приводятся имеющиеся в VBA строковые функции; в последующем разделе более подробно описывается, как использовать наиболее важные и полезные строковые функции.
В табл. 16 приведены основные строковые функции VBA.
Таблица 16
Функция(аргумент)
Действие
InStr(N1,S1,S2,N2)
Возвращает положение S2 в S1. N1 - начальное положение для поиска. N2 определяет, следует ли выполнять поиск с учетом регистра. N1, N2 - необязательные аргументы
Lcase(S)
Возвращает строку (тип String), содержащую копию S со всеми символами верхнего регистра, преобразованными в символы нижнего регистра
Ucase(S)
Возвращает S со всеми символами нижнего регистра, преобразованными в символы верхнего регистра
Mid(S,N1,N2)
Возвращает строку: копирует N2 символов из S, начиная с позиции символа в S, заданной аргументом N1. N2 - необязательный аргумент, если он опущен, то возвращаются все символы в строке S от позиции N1 до конца строки
Right(S,N)
Возвращает значение типа String: копирует N символов из S, начиная с правого крайнего символа S
Left(S,N)
Возвращает строку: копирует N символов из S, начиная с левого крайнего символа S
Len(S)
Возвращает число символов в S, включая начальные и конечные пробелы
Ltrim(S)
Возвращает копию строки S после удаления символов пробела из левой части строки
(начальные пробелы)
Rtrim(S)
Возвращает копию строки S после удаления символов пробела из правой части строки
(конечные пробелы)
Trim(S)
Возвращает копию строки S после удаления начальных и конечных символов пробела из этой строки
String(N,S)
Возвращает строку длиной N символов, состоящую из символа, заданного первым символом в S
29
В Word важность манипулирования строковыми данным и очевидна: данные, сохраняемы е в документах Word, в основном являются ничем иным, как строковыми данными. Строковые данные также важны в Excel в качестве имен рабочих листов, именованных диапазонов данных и так далее. В этом разделе приводятся имеющиеся в VBA строковые функции; в последующем разделе более подробно описывается, как использовать наиболее важные и полезные строковые функции.
В табл. 16 приведены основные строковые функции VBA.
Таблица 16
Функция(аргумент)
Действие
InStr(N1,S1,S2,N2)
Возвращает положение S2 в S1. N1 - начальное положение для поиска. N2 определяет, следует ли выполнять поиск с учетом регистра. N1, N2 - необязательные аргументы
Lcase(S)
Возвращает строку (тип String), содержащую копию S со всеми символами верхнего регистра, преобразованными в символы нижнего регистра
Ucase(S)
Возвращает S со всеми символами нижнего регистра, преобразованными в символы верхнего регистра
Mid(S,N1,N2)
Возвращает строку: копирует N2 символов из S, начиная с позиции символа в S, заданной аргументом N1. N2 - необязательный аргумент, если он опущен, то возвращаются все символы в строке S от позиции N1 до конца строки
Right(S,N)
Возвращает значение типа String: копирует N символов из S, начиная с правого крайнего символа S
Left(S,N)
Возвращает строку: копирует N символов из S, начиная с левого крайнего символа S
Len(S)
Возвращает число символов в S, включая начальные и конечные пробелы
Ltrim(S)
Возвращает копию строки S после удаления символов пробела из левой части строки
(начальные пробелы)
Rtrim(S)
Возвращает копию строки S после удаления символов пробела из правой части строки
(конечные пробелы)
Trim(S)
Возвращает копию строки S после удаления начальных и конечных символов пробела из этой строки
String(N,S)
Возвращает строку длиной N символов, состоящую из символа, заданного первым символом в S
29
Space(N)
Возвращает строку пробелов длиной N символов
StrComp(S1,S2,N)
Сравнивает S1 с S2 и возвращает число, обозначающее результат сравнения: -1, если
S1
StrConv(S,N)
Возвращает строку, преобразованную в новую форму в зависимости от числового кода, заданного аргументом N. VBA предоставляет внутренние константы для использования с функцией StrConv.
Наиболее полезными являются: vbProperCase
(преобразует строку так, что каждая буква, начинающая слово, становится заглавной), vbLowerCase
(преобразует строку в буквы нижнего регистра) и vbUpperCase (преобразует строку в буквы верхнего регистра)
1 2 3 4
6.
Практика
Задание 1
Откройте книгу с макросами
Строки.xlsm.
Задание 2
Откройте макрос с именем obrstr1. Он представляет собой макрос поиска всех букв "а" и печать номеров позиций этих букв в строке символов.
Запустите эту макрос, введите строку, содержащую нужные символы, и убедитесь, что макрос работает правильно.
Модифицируйте программу так, чтобы: а) подсчитывалось и печаталось число букв "а"; б) учитывались еще и заглавные буквы "А".
Задание 3
Откройте макрос с именем obrstr2. Он содержит макрос замены всех букв "а" на "б". Модифицируйте его так, чтобы происходила еще и обратная замена, например слово "баба" превращалось в "абаб". Сделайте то же с учетом заглавных букв.
Задание 4
В макросе с именем obrstr3 находится программа поиска в строке всех заданных фрагментов. Разберите, в чем ее отличие от предыдущих программ. Модифицируйте макрос так, чтобы вместо фрагмента "мама" отыскивался фрагмент "ма" (в слове "мама" он должен обнаруживаться дважды).
Задание 5
В файле obrstr4 находится макрос замены в строке одного слова другим. Разберите, в чем отличие этого макроса от предыдущих.
Модифицируйте макрос так, чтобы слово "мама" заменялось словом "бабушка". С какой проблемой вы столкнулись?
Напишите макрос замены всех вхождений данного фрагмента на
30
Практика
Задание 1
Откройте книгу с макросами
Строки.xlsm.
Задание 2
Откройте макрос с именем obrstr1. Он представляет собой макрос поиска всех букв "а" и печать номеров позиций этих букв в строке символов.
Запустите эту макрос, введите строку, содержащую нужные символы, и убедитесь, что макрос работает правильно.
Модифицируйте программу так, чтобы: а) подсчитывалось и печаталось число букв "а"; б) учитывались еще и заглавные буквы "А".
Задание 3
Откройте макрос с именем obrstr2. Он содержит макрос замены всех букв "а" на "б". Модифицируйте его так, чтобы происходила еще и обратная замена, например слово "баба" превращалось в "абаб". Сделайте то же с учетом заглавных букв.
Задание 4
В макросе с именем obrstr3 находится программа поиска в строке всех заданных фрагментов. Разберите, в чем ее отличие от предыдущих программ. Модифицируйте макрос так, чтобы вместо фрагмента "мама" отыскивался фрагмент "ма" (в слове "мама" он должен обнаруживаться дважды).
Задание 5
В файле obrstr4 находится макрос замены в строке одного слова другим. Разберите, в чем отличие этого макроса от предыдущих.
Модифицируйте макрос так, чтобы слово "мама" заменялось словом "бабушка". С какой проблемой вы столкнулись?
Напишите макрос замены всех вхождений данного фрагмента на
30
другой.
Продемонстрируйте преподавателю выполненные задания.
7.
Вопросы для контроля
(1)
Для чего используются строковые типы данных?
(2)
Как ввести строку?
(3)
Как вывести строку в заданное место экрана? С нужным количеством символов?
31
Продемонстрируйте преподавателю выполненные задания.
7.
Вопросы для контроля
(1)
Для чего используются строковые типы данных?
(2)
Как ввести строку?
(3)
Как вывести строку в заданное место экрана? С нужным количеством символов?
31
Лабораторная работа №5.
Операторы ветвления и выбора
1.
Что такое ветвление и как оно организуется в языке VBA?
При разработке алгоритмов очень часто возникают ситуации, когда выполняемые действия зависят от некоторого условия, т.е. сначала требуется проверить условие (или несколько условий) и в зависимости от того, выполняется оно или нет, выполнить различные действия. Например, при начислении стипендии проверяется, как студент сдал сессию. Если у него остались “хвосты”, то ему будет назначена нулевая стипендия, если он сдал все на “отлично”, то - повышенная, в остальных случаях - обычная.
Для организации таких действий в языке VBA имеются две алгоритмические конструкции:
•
ВЕТВЛЕНИЕ - условный оператор IF;
•
ВЫБОР - условный оператор CASE.
2.
Условный оператор IF
2.1.
Теория
Существует два варианта оператора: а) полная развилка: if S then A else B; б) укороченная развилка: if S then A.
В этих операторах:
S - логическое выражение, истинность которого проверяется;
А - оператор, который выполняется, если выражение S истинно;
В - оператор, который выполняется, если выражение S ложно.
Пример 1
Полная развилка:
IF X>0 then writeln
(‘число положительное’)
else writeln
(‘число отрицательное или 0’);
Пример 2
Укороченная развилка:
If D=0 then X:=X+1;
Пример 4
Составное условие:
if (A>5) and (A<10) then writeln(‘
точка на отрезке (5,10)’);
2.2.
Практика
Задание 1
Откройте книгу с макросами
Ветвление
Задание 2
Откройте макрос lab4_1a. Прочитайте и проанализируйте текст макроса. Запустите макрос на выполнение и проверьте его работу для различных данных. Для каких данных макрос выдает некорректный результат? Модифицируйте макрос таким образом, чтобы он в случае ввода одинаковых чисел выдавал сообщение: “Числа равны!”
Покажите результат преподавателю.
32
Задание 3
Психологи рекомендуют учитывать оптимальное соотношение возрастов при вступлении в брак. Оно таково: возраст невесты равен половине возраста жениха плюс 7. Составьте макрос для определения, подходят ли жених и невеста друг другу по возрасту.
Задание 4
1.
Напишите макрос, который позволяет найти максимальное из трех заданных чисел.
2. Протестируйте это макрос (проверьте корректность ее работы в разных случаях). Сколько наборов входных данных нужно проверить?
3. Откройте макрос lab4_2a.
В данном макросе реализован оптимальный, на наш взгляд, алгоритм нахождения максимального числа. Сравните этот алгоритм со своим.
Попробуйте оценить, какой из алгоритмов является оптимальным.
(Оптимальным мы считаем тот алгоритм, который позволяет либо сократить время выполнения программы за счет уменьшения количества выполняемых команд, либо уменьшить объем памяти за счет уменьшения количества переменных.)
Задание 5
1. Откройте макрос lab4_3a.
2. Прочитайте и проанализируйте текст макроса. Обратите внимание на составные условия.
3.
Модифицируйте этот макрос так, чтобы в том случае, когда введены значения сторон (такие, что из них можно построить треугольник, помимо выдачи текста “можно”), еще подсчитывался периметр треугольника.
3.
Оператор выбора CASE
3.1.
Теория
С помощью этого оператора можно выбрать один вариант из любого количества вариантов. Структура этого оператора в языке VBA:
Select case S
Case c1:<
оператор 1>;
Case c2:<оператор 2>;
Case cN:<
оператор N>
Case else
<оператор N+1>
End select;
В этой структуре S - некоторое выражение, значением которого является либо целое число, либо символ
1
; оператор 1, оператор 2, ... оператор N - операторы, из которых выполняется тот, с константой которого (с1..сN) совпадает значение выражения
S; оператор N+1 - оператор, который выполняется, если значение
1
Переменную S называют “переключателем”. S может быть любого порядкового типа (см. учебник).
33
выражения S не совпадает ни с одной из констант c1, ... ,cN.
Ветвь оператора else является необязательной
2
3.2.
Практика
Задание 6
1.
Откройте книгу с макросом lab4_4a.
2.
Прочитайте текст макроса и проанализируйте его.
3.
Запустите макрос на выполнение и посмотрите, как он работает.
4.
Модифицируйте данный макрос таким образом, чтобы он при вводе числа 0 выводила какое-либо сообщение черным цветом (Black) на синем фоне (Blue), а при вводе числа 12 - сообщение розовым цветом
(LightRed) на зеленом (Green) фоне.
Задание 7
Составьте программу, которая позволяет для любых двух заданных чисел А и В и номера операции (“+” - сложение, “-” - вычитание, “*” - умножение, “/” - деление) получать на экране результат.
Подсказка
В качестве переключателя в данной задаче лучше всего использовать переменную типа string.
Задание 8
Напишите макрос, который позволяет определить, является введенная буква гласной или согласной.
Задание 9
Составьте макрос, который позволяет по возрасту определить, к какой группе относится данный человек (моложе 3 лет - совсем маленький, от 4 до
7 - детсадовский возраст, следующие 7 лет - подросток, от 15 до 20 - самый цвет и т.д. по вашему усмотрению).
Пригласите преподавателя и продемонстрируйте ему свои программы
2
Примеры использования оператора можно еще раз посмотреть в лекции.
34
Ветвь оператора else является необязательной
2
3.2.
Практика
Задание 6
1.
Откройте книгу с макросом lab4_4a.
2.
Прочитайте текст макроса и проанализируйте его.
3.
Запустите макрос на выполнение и посмотрите, как он работает.
4.
Модифицируйте данный макрос таким образом, чтобы он при вводе числа 0 выводила какое-либо сообщение черным цветом (Black) на синем фоне (Blue), а при вводе числа 12 - сообщение розовым цветом
(LightRed) на зеленом (Green) фоне.
Задание 7
Составьте программу, которая позволяет для любых двух заданных чисел А и В и номера операции (“+” - сложение, “-” - вычитание, “*” - умножение, “/” - деление) получать на экране результат.
Подсказка
В качестве переключателя в данной задаче лучше всего использовать переменную типа string.
Задание 8
Напишите макрос, который позволяет определить, является введенная буква гласной или согласной.
Задание 9
Составьте макрос, который позволяет по возрасту определить, к какой группе относится данный человек (моложе 3 лет - совсем маленький, от 4 до
7 - детсадовский возраст, следующие 7 лет - подросток, от 15 до 20 - самый цвет и т.д. по вашему усмотрению).
Пригласите преподавателя и продемонстрируйте ему свои программы
2
Примеры использования оператора можно еще раз посмотреть в лекции.
34
Лабораторная работа №6
Разные конструкции цикла
1.
Теория
В языке VBA для организации циклических (повторяющихся) действий имеется три конструкции.
1.1. Цикл со счетчиком (FOR)
Данный цикл был рассмотрен ранее. Вспомним, что он используется тогда, когда требуется выполнить повторяющуюся последовательность действий, причем КОЛИЧЕСТВО повторений известно. Общая структура цикла:
For <
имя>=<выражение1> TO <выражение2> STEP <выражение>
Значение переменной <имя> может быть либо целого, либо перечислимого, либо символьного типа и изменяется от <выражение1> до
<
выражение2> на 1. Конструкция с TO обеспечивает возрастание значений переменной.
1.2. Цикл с предусловием (WHILE)
Цикл WHILE используется тогда, когда количество повторений заранее неизвестно, но зато известно УСЛОВИЕ ЗАВЕРШЕНИЯ выполнения цикла.
При этом условие должно проверяться ДО ВЫПОЛНЕНИЯ оператора в цикле.
Конструкции
Описание
Do While
<условие>
<блокОператоров>
Loop
Условие проверяется до операторов тела цикла
Цикл продолжается пока условие выполняется
(истинно)
Do
<блокОператоров>
Loop While
<условие>
Условие проверяется после операторов тела цикла
Цикл продолжается пока условие выполняется
(истинно)
Do Until
<условие>
<блокОператоров>
Loop
Условие проверяется до операторов тела цикла
Цикл продолжается пока условие еще не
выполнено (ложно)
Do
<блокОператоров>
Loop Until
<условие>
Условие проверяется после операторов тела цикла
Цикл продолжается пока условие еще не
выполнено (ложно)
35
2.
Практика
Задание 1 (посвящается циклу FOR)
Выполните следующие действия: а) загрузите файл
Циклы.xlsm
; б) прочитайте текст макроса SummaQvadratov и проанализируйте его; в) запустите макрос на выполнение (рекомендуем задать в качестве значения числа N значения 1, 10, 0, -5). Оцените, как макрос ведет себя в различных ситуациях).
Задание 2 (посвящено также циклу FOR, но уже вложенному)
Выполните следующие действия: а) прочитайте текст программы PifagorTable и проанализируйте его; б) запустите макрос на выполнение; в) попробуйте так модифицировать макрос, чтобы он выводил таблицу
Пифагора 15 на 15.
Задание 3(посвящено циклу с условием)
Выполните следующие действия: а) прочитайте текст макроса SummaKvadrM и проанализируйте его; б) запустите макрос на выполнение (рекомендуем задать в качестве значения числа M значения 100, 200, 0, -5). Оцените, как макрос ведет себя в различных ситуациях.
Задание 4 (посвящено циклу с условием)
Выполните следующие действия: б) прочитайте текст макроса Maximum и проанализируйте его; в) запустите макрос на выполнение; г) оцените, как это удобно, когда можно много раз выполнять один и тот же макрос без перезапуска.
Обычно выполнение процедур заканчивается после выполнения ее последнего оператора, а выполнение цикла – после выполнения тела цикла несколько раз, по достижению условия завершения его работы. Однако, в некоторых случаях бывает нужно прекратить выполнение процедуры или цикла досрочно, избежав выполнение лишних операторов процедуры или лишних повторений цикла.
Досрочный выход из управляющей конструкции можно осуществить с помощью одного их оператора
Exit
Для досрочного выхода из цикла
Do используется оператор
Exit Do
, а для выхода из цикла
For
– оператор
Exit For
Для досрочного выхода из процедур и функций используется операторы
Exit Sub и
Exit Function
Задание 5
Откройте книгу MS Excel
Угадайка.xlsm
а) Разберитесь в тексте макроса. Запустите макрос на выполнение. б) Найдите в тексте макроса оператор Exit For и закомментируйте
36