Составление макросов с помощью написания кода в Visual Basic. Упражнение 18. «Таблица истинности». Задание. Составить таблицу истинности функции F=
Порядок выполнения.
Создать макрос «Табл», в который записать следующий код: Sub Табл () Dim А, В, Z, F As Boolean
Range("B1") = "А": Range("C1") = "В" Формируем строку заголовка
Range("D1") = "Z" : Range("E1") = "F"
i = 2 Начинаем таблицу со 2 строки
For А = True To False Цикл перебора по А
For В = True To False Цикл перебора по В
For Z = True To False Цикл перебора по Z
With Application Формируем значения в столбцах
Cells(i, 1) = i - 1
Cells(i, 2) = А
Cells(i, 3) = В
Cells(i, 4) = Z
Cells(i, 5) = Not A Or B Imp Not Z
End with
i = i + 1 переходим на следующую строку
Next закрываем цикл по Z
Next закрываем цикл по В
Next закрываем цикл по А End Sub В результате запуска макроса создаётся таблица истинности заданной функции (табл. 26).
Таблица 26
| A
| B
| Z
| F
| 1
| -1
| -1
| -1
| 0
| 2
| -1
| -1
| 0
| -1
| 3
| -1
| 0
| -1
| -1
| 4
| -1
| 0
| 0
| -1
| 5
| 0
| -1
| -1
| 0
| 6
| 0
| -1
| 0
| -1
| 7
| 0
| 0
| -1
| 0
| 8
| 0
| 0
| 0
| -1
| .
Вопросы к упражнению.
Сколько строк будет в таблице истинности, если функция будет зависеть от четырёх переменных?
Какой код следует дописать в программе, чтобы текст в строке заголовка выводился жирным шрифтом?
Самостоятельная работа 22. Задание. Составить таблицу истинности функции–
1 вариант. Логического сложения.
2 вариант. Логического следования
3 вариант. Логического умножения.
4 вариант. Функции F=
Дополнительные задания к лабораторной работе 4. Самостоятельная работа 23. Задание. По аналогии с упражнением «Анализ функции» выполнить анализ синусоиды Y=ASin(хW), в зависимости от значений A и W. Показать, что при изменении А (изменение от 0 до 50 шагом 1) изменяется амплитуда синусоиды , а при изменении W(от 0 до 10 шагом 1) изменяется частота. Пределы изменения х от 0 до 3,4 шагом 0,15. Пример размещения объектов на рис. 68.
Рис. 68
Упражнение 19. «Журнал пользователей». Задание. Для вашей рабочей книги описать события Open и Close таким образом, чтобы при открытии файла запрашивалось имя пользователя и записывалось в другой файл Excel, а также время начала работы. При закрытии в тот же файл записывать время окончания работы.
Пояснения к выполнению.
Now – функция Visual Basic, возвращающая системную дату и время компьютера.
Порядок выполнения.
Создать в своей директории новый файл Excel. Набрать в нём заголовок «Журнал пользователей». Создать шапку таблицы как на рис. 69. В ячейке F1 организовать подсчёт количества записей в столбце А помощью функции МАКС: =МАКС(A:A). Выделить столбец В, выбрать пункт меню ФОРМАТ – ЯЧЕЙКИ , в разделе ЧИСЛО задать тип данных в этом столбце – текстовый. Аналогично настроить типы данных для столбца С – дата, для столбцов D и Е – время. Сохранить файл под именем “s.xls”. Закрыть файл.
Рис. 69
Открыть свою рабочую книгу. Войти в редактор Visual Basic. В проводнике проекта указать на «Эта книга», затем представить документ в виде кода (View – Code), выбрать в списке объектов Workbook, событие Open (Рис. 70 ).
Рис. 70
Внести в процедуру следующий код:
Private Sub Workbook_Open() Dim i As String ' Объявляем строковую переменную
Dim row As Integer ' объявляем вспомогательную переменную row
i = InputBox("Ваше имя?", "", "ХХ") ' Запрашиваем имя пользователя
Application.ScreenUpdating = False ' Даём команду не обновлять экран
Workbooks.Open ("D:\....\s.xls") ' Необходимо указать полный путь до файла s.xls
With Workbooks("s.xls").Worksheets("Лист1")
row = Range("F1").Value + 3 ' Вычисляем номер заполняемой строки
Cells(row, 1).Value = row - 2 ' Создаём порядковый номер строки
Cells(row, 2).Value = i ' Вносим пользователя
Cells(row, 3).Value = Date ' Вносим дату начала работы
Cells(row, 4).Value = Time Вносим время начала работы
End With
Workbooks("s.xls").Save ‘Сохраняем файл “s.xls”.
Workbooks("s.xls").Close ‘ Закрываем файл “s.xls”
Application.ScreenUpdating = True ' Разрешаем обновление экрана End Sub
Выбрать в списке событий событие BeforeClose.
Внести следующий код:
Private Sub Workbook_Close() Dim i As String ' Объявляем строковую переменную
Dim row As Integer ' объявляем вспомогательную переменную row
Application.ScreenUpdating = False ' Даём команду не обновлять экран
Workbooks.Open ("D:\издат\s.xls") ' Необходимо указать полный путь до файла s.xls
With Workbooks("s.xls").Worksheets("Лист1")
row = Range("F1").Value + 2 ' Вычисляем номер заполняемой строки
Cells(row, 5).Value = Time ‘Вносим время окончания работы
End With
Workbooks("s.xls").Save
Workbooks("s.xls").Close
Application.ScreenUpdating = True ‘Разрешаем обновлять экран End Sub
Запустить поочерёдно процедуру Open. Перейти в Excel, открыть файл “s.xls” и убедиться, что внесено имя пользователя и время начала работы. Закрыть файл “s.xls”, затем свою рабочую книгу. Открыть файл “s.xls” и убедиться, что время окончания внесено по аналогии с табл. 27.
Таблица 27 Журнал пользователей
|
| Всего записей
| 2
| №пп
| Пользователь
| Дата начала работы
| Время начала работы
| Время окончания работы
|
| 1
| Паша Филонов
| 29 сентября 2006 г.
| 19:10
| 19:11
|
| 2
| Миша Белокриницкий
| 29 сентября 2006 г.
| 19:15
| 19:16
|
|
Закрыть файл “s.xls”.
Самостоятельная работа 24. Задание. Применив функцию Visual Basic - TimeDiff, дописать код процедуры BeforeClose в предыдущем упражнении так, чтобы в столбец F первого листа книги S.хls записывалось общее время сеанса работы в минутах.
Самостоятельная работа 25. Задание. Предположим, что вам нужно сформировать регистрационный номер каждого клиента так, чтобы он состоял из буквы от А до Д из цифры от 1 до 9, например Б7. Создать макрос, который выводит на лист Excel список всех комбинаций номеров и их порядковый номер. Вопросы для самоконтроля.
Какой код нужно дописать в процедуру BeforeClose в упражнении «Журнал пользователей», чтобы заполненные ячейки имели обрамление и шрифт вносимого текста был 14 размера?
В каких случаях удобнее обращаться к ячейкам как к объекту Range , а в каких как к объекту Cells?
Чем отличается объект Range в Word и в Excel?
Литература Пастко В., Microsoft Office для пользователей. Киев,BHV, 1998.
Иванов В, Microsoft Office System 2003. Питер, BHV, 2004.
Зеньковский В., Excel в экономических и инженерных расчётах. Москва: Солон- Пресс, 2004.
Столяров А., Шпаргалка по Excel. Москва: Вербо, 1997.
Морозов В., Практикум по компьютерным технологиям. Москва: ABF, 1996.
Шафрин Ю., Основы компьютерных технологий. Москва: ABF, 1996г.
. Кузьменко В, VBA 2000. Москва: Бином, 2000.
Эйткен П., Разработка приложений на VBA в среде Office XP. Москва: РН PTR, 2003.
. Гарнаев А, VBA- самоучитель. Санкт- Петербург: БХВ-Петербург, 2004г.
. Гарнаев А, VBA. Наиболее полное руководство. Санкт – Петербург: БХВ – Петербург,2005.
|