Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
ПЗ-9. Использование VBA для разработки модулей программ (массивы).
Решим несложную задачу розыгрыша одномерных случайных массивов с использованием редактора Visual Basic Excel. Окно этой прикладной программы можно вызвать несколькими способами: 1) вкладка Разработчик- Visual Basic; 2) сочетание клавиш Alt-F11, (повторное сочетание возвратит нас в окно Excel); 3) щелчок правой кнопкой мыши (ПКМ) по корешку листа, пункт Исходный текст.
Экран редактора разбит на три части. Справа одно большое окно кода. Здесь будем писать программу на VBA. Слева вверху " Project - VBAProject " - Окно проекта. Это окно, в котором выбираем расположение того кода, который будем писать (если вы его закроете, вновь открыть можно, нажав Ctrl+R). В этом окошке находится папка "Microsoft Excel Objects", а в ней список листов книги и ниже сама книга (ЭтаКнига). Каждый лист, а также сама книга Excel считается отдельным объектом. Нажатие двойным кликом на любом из них открываем окно кода для этого объекта. Увидеть, чье окно кода открыто, можно, посмотрев на заголовок редактора кода (UserForm - на рисунке), или на список элементов (активный подсвечен). Есть особенность: код, написанный в окне конкретного объекта (листа или книги), доступен только этому объекту. Чтобы писать универсальный код (макрос), который можно применять без привязки к документу, нужно создать Модуль. (Мы создавали макрос Возврат, применяемый на любом листе книги, в отдельном модуле, создаваемом автоматически при написании макроса). В нижней половине окна проекта расположено окно Свойств (Properties) активного объекта. Среди них есть стандартные, а есть особенные. Если вы закрыли окно Свойства, открыть его вновь для данного объекта (элемента) можно с помощью функциональной клавиши F4. Есть еще одно окно - это Окно отладчика (Immediate). Как правило, оно закрыто. Открыть его можно, нажав Ctrl+G (или найти в меню View). Оно расположено по умолчанию под окном кода. Модуль. Создание. В окне проекта (VBA Project(аКнигаСодержание…)) или в папке "Modules" нажимаем ПКМ, выбираем Insert/ Module. Видим, что появилась новая "папочка" "Modules" и в ней новый документ "Module1" (если папка была, то появится только очередной экземпляр модуля). Сразу переименуем его в " Module_Form1mer ". Для этого становимся курсором в окне проекта на Module1. Ниже, в окне свойств, видим всего одну строчку: надпись "(Name)" и правее "Module1". Изменяем эту надпись на указанную, нажимаем Enter. Видим, что модуль везде поменял название.
В поле кода запишем заголовок программки (процедуры), это имя будет именем макроса. Нажмем Enter и внутри заготовки напишем строку команды для открытия (Show) формы: Sub massiv1mern() Form1merMassiv.Show End Sub Форма. В окне проекта (VBA Project(аКнигаСодержание…)) нажимаем ПКМ, выбираем Insert/UserForm. Сразу же меняем ее имя в окне свойств (рис.выше). Затем свойство Caption меняем на надпись «Одномерный массив из 10 случ.чисел» В этой форме разместим (нарисуем) элементы управления: текстовый бокс и 2 командные кнопки, эти элементы находятся в окошке Toolbox, которое появляется при активизации формы (см.рисунок ниже, кружочком выделено текстовое поле). Меняем свойства Caption кнопок, как показано на рисунке, имена оставляем по умолчанию. Процедуры (подпрограммы, командные коды). Щелкаем 2 раза ЛКМ по второй кнопке, в окне кода появляется заготовка процедуры щелчка (Click) кнопкой, где мы набираем команду скрытия формы и очистку текстового поля: Private Sub CommandButton2_Click() Form1merMassiv.Hide TextBox1 = "" End Sub Щелкаем 2 раза ЛКМ по первой кнопке и пишем программу (блок команд): Option Explicit 'оператор проверки объявлений используемых переменных Private Sub CommandButton1_Click() Dim M(1 To 10) As Integer ‘Объявление массива целых чисел Dim N(1 To 10) As Single ‘Объявление массива дробных чисел Dim i%, k% ‘Объявление переменных в виде целых чисел TextBox1 = "" ‘Очистка текстового бокса перед новым массивом Randomize 'оператор, который запускает начальное значение случайных чисел Debug.Print "массив M(i) от 0 до 100" 'Заголовок массива For i = 1 To 10 'цикл от 1 до 10 M(i) = Rnd() * 100 'генерирование случайного числа Debug.Print M(i); ' так будет печать в одной строке, напр.: 74 38 37 12 37 2 9 24 45 75 ' если; (точку с запятой) не поставить, будет печать чисел в столбик!!!! ' ниже печать чисел в текстовом окне формы в виде нарастающего итога TextBox1 = TextBox1 + CStr(M(i)) + " " ' пробел для раздела чисел Next i Debug.Print 'пустая строка Debug.Print "массив N(k) от -1 до 1" 'Заголовок массива For k = 1 To 10 N(k) = (Rnd() * 2) - 1
Debug.Print N(k) ' будет печать в столбик!!!! ' здесь можно задать распечатку массива в текстовом окне формы в любом виде Next k MsgBox "Оба массива в окне отладки!!!" End Sub Все готово. Эту программу можно запустить на исполнение прямо из окна VB, нажав кнопку Run Sub (рис.слева). Результат можно посмотреть в окне отладки, который вызывается из меню View VB или сочетанием Ctrl+G.
Но сделаем доработку. На титульном листе через Разработчик вставляем элемент управления формы Кнопка. [Если вкладки Разработчик нет, активизируем ее: Файл à Параметры Excel à «птичка» в квадратике Разработчик]. В появившемся окне Назначение макроса щелкаем по подпрограмме (макросу) massiv1mern. Тем самым присваиваем его кнопке, меняем ее название на «Построить одномерные массивы». Щелкаем по этой кнопке. Появляется форма. Щелкаем по кнопке «Заполнить два 1-мерных массива» на форме. Один массив появляется в текстовом окне, а второй (вместе с первым) находится в окне отладки в редакторе Visual Basic: Массив M(i) от 0 до 100 1 43 42 17 49 74 56 86 37 52 Массив N(k) от -1 до 1 -0,6241974 -0,4315228 -0,283106 0,9673221 0,5040017 0,9050713 0,0435375 -0,5218856 0,999457 -0,1647906 Окно отладки Immediate вызывается (см.выше). Итак, мы разработали программы обработки событий (нажатие кнопки). Кроме того, применили макрос с одной командой для открытия формы. Давайте разберем приведенный выше в качестве примера макрос (процедуру) massiv1mern.
Сразу становится ясно, что написать вручную набор нескольких команд для описания необходимых действий сложно - часто непонятно, какие именно команды и как надо вводить, чтобы макрос автоматически выполнял нужные нам действия. Поэтому детальнее рассмотрим второй способ создания макросов, а именно - запись макросов макрорекордером. [Мы уже использовали этот способ при создании кнопок открытия листов книги в ПЗ-4.] Макрорекордер - это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем выполнять какие-либо действия (построение прогрессии, например), то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим подробную программу (процедуру). Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операции, перемотал пленку и запустил выполнение тех же действий еще раз. У такого способа есть свои плюсы и минусы:
Чтобы начать запись, необходимо нажать кнопку Запись макроса на вкладке Разработчик (стр.23),а затем настроить параметры записываемого макроса в окне Запись макроса (там же). Записав необходимые действия, надо нажать кнопку окончания записи.
Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы на вкладке Разработчик, или сочетанием клавиш Alt+F8.
Оба указанных выше способа создания макросов мы будем использовать на следующем практическом занятии.
В качестве дополнительного задания для конструирования объектов с помощью VBA ниже приведена распечатка программы ZadanieAAA() моделирования двумерного массива случайных целых чисел. Для нее можно создать форму с текстовым полем, куда (дополнительно к распечатанной программе) отправлять получаемые результаты обработки массива (суммы строк и столбцов, …), как это было сделано выше в одномерном массиве. Либо ограничиться просмотром результата программы в окне Immediate. ========================================================================= Option Explicit
|
|||||||
Последнее изменение этой страницы: 2017-01-20; просмотров: 497; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.100.180 (0.02 с.) |