информатика. Игнатьева Елена Александровна, Измайлова Елена Ивановна. Информатика. Электронный ресурс методические указания
Скачать 4.32 Mb.
|
Run Sub/UserForm или нажмите клавишу F5. СОВЕТ. При работе в редакторе Visual Basic можно за- пускать разные макросы 121 Запуская макрос, вы выполняете записанные в нем действия. В некоторых случаях перед началом запуска макроса необходимо выделить ячейку или несколько ячеек, которые подлежат обра- ботке с помощью макроса. Опции доступные при записи макроса В диалоговом окне запись макроса имеется несколько опций Имя и описание макроса С одной стороны, не имеет значения, какое имя вы даете макросу, поскольку макрос, как его не назови, будет выполнять те же самые действия. Но, с другой стороны, можно назвать мак- рос так, чтобы его имя напоминало вам, что он делает. Имеется несколько правил, которые необходимо соблюдать при задании имени макросу. 1. Имя макроса не должно содержать более 255 символов. 2. Имя должно начинаться с буквы, хотя может включать и цифры. Можно использовать символ подчеркивания, если хотите разделить слова. 3. В имени макроса нельзя использовать пробел и другие специальные символы. 4. Следует избегать использования ключевых слов VBA, имеющих специальное значение. Поле Описание позволяет разместить более подробное опи- сание того, что делает макрос. Это описание потом отображается в диалоговом окне Макрос при выборе имени макроса. Здесь можно ввести несколько строк, но не следует вводить слишком длинные описания. Быстрый запуск макросов Так как макросы предназначены для ускорения вашей ра- боты, их использование должно быть как можно более удобным. Microsoft Excel предоставляет 3 простых способа доступа к мак- росам. 1. С помощью комбинации клавиш 2. Нажатием кнопки на панели быстрого доступа 3. Запуск макроса щелчком области графического объекта 4. Кнопкой на рабочем листе 122 Запуск макроса нажатием клавиши CTRL в сочетании с клавишей быстрого вызова. 1. На вкладке Разработчик в группе Код нажмите кнопку Макросы 2. В поле Имя макроса выберите макрос, которому нуж- но назначить сочетание клавиши CTRL с клавишей быстрого вызова. 3. Нажмите кнопку Параметры. 4. В поле Сочетание клавиш введите нужную пропис- ную или строчную буквы. ПРИМЕЧАНИЕ. Выбранное сочетание клавиш заменяет все совпадающие стандартные сочетания клавиш Excel на то время, пока открыта книга, содержащая данный макрос. Список уже заданных сочетаний клавиши CTRL с клавишами быстрого вызова см. в статье Клавиши быстрого вызова и функциональ- ные клавиши Excel. 5. Для добавления описания к макросу введите нужный текст в поле Описание. 6. Нажмите кнопку ОК, а затем — кнопку Отмена. Запуск макроса нажатием кнопки на панели быстрого доступа 1. Щелкните значок Кнопка Microsoft Office , а затем щелкните Параметры Excel. 2. В категории Настройка в списке Выбрать команды из выберите вариант Часто используемые команды. 3. В поле списка выберите вариант Макросы, а затем на- жмите кнопку Добавить. 4. Нажмите кнопку ОК. СОВЕТ. Кнопка Макросы будет добавлена на панель быстрого доступа 5. На панели быстрого доступа нажмите кнопку Макросы. 123 6. В поле Имя макроса выберите макрос, который нужно запустить, а затем нажмите кнопку Выполнить Запуск макроса щелчком области графического объекта 1. Выделите на листе графический объект (рисунок, клип, фигуру или рисунок SmartArt). 2. Для создания активной области на существующем объекте нажмите кнопку Фигуры в группе Иллюстрации на вкладке Вставка, выберите одну из фигур и нарисуйте ее на существую- щем объекте. 3. Щелкните созданную активную область правой кнопкой мыши, а затем выберите пункт Назначить макрос в контекстном меню. 4. Выполните одно из следующих действий: чтобы назначить графическому объекту существующий макрос, дважды щелкните нужный макрос или введите его имя в поле Имя макроса. чтобы записать новый макрос для назначения выделенному графическому объекту, нажмите кнопку Записать. После завершения записи макроса нажмите кнопку Остановить запись на вкладке Разработчик в группе Код. СОВЕТ. Можно также нажать кнопку Остановить запись слева от строки состояния. для редактирования существующего макроса щелкните его имя в поле Имя макроса, а затем нажмите кнопку Изме- нить 5. Нажмите кнопку ОК. 6. На листе выберите активную область. Отобразится панель Рисование и вкладка Формат. 124 7. На вкладке Формат в группе Стили фигур выполните сле- дующие действия: щелкните стрелку рядом с кнопкой Заливка фигуры и выберите вариант Нет заливки. щелкните стрелку возле кнопки Контур фигуры и вы- берите вариант Нет контура. 125 Запуск макроса кнопкой на рабочем листе Вы можете поместить кнопку непосредственно на рабочий лист. 1. Выберите Разработчик. 2. Щелкните Вставить вберите значок кнопки, после этого щелкните в каком-либо месте рабочего листа и растяните грани- цы кнопки. 3. Выполните правый щелчок кнопки и выберите во всплы- вающем меню пункт Исходный текст, чтобы открыть код собы- тия Click (Щелчок) для этой кнопки. 4. Напечатайте в месте установки курсора следующую стро- ку: Call имя макроса При этом программный код примет вид: Private Sub CommandButton1_Click() Call имя макроса End sub 5. Закройте окно редактора кода и выйдите из режима разра- ботки (закройте окно Microsoft Visual Basic for Application) 6. Щелкните кнопку Выход из режима конструктора. Теперь созданная вами кнопка будет запускать макрос. Для того чтобы удалить созданную вами кнопку: на панели инструментов Элементы управления щелкните кнопку Режим конструктора, выполните правый щелчок по вашей кнопке и выберите команду Вырезать. Выбор места для хранения макросов. Имеется три места для сохранения макроса в рабочей книге. Макрос можно хранить в текущей, новой, или особой книге, на- зываемой Личная книга макросов. По умолчанию запустить макрос можно только в том случае, если рабочая книга, в которой создан открыта. Для того, чтобы иметь доступ к макросу в любое время макрос нужно сохранять в Личной книге макросов. Лич- ная книга макросов – скрытый файл, который Microsoft Excel создает при выборе соответствующей опции, и при каждом по- 126 следующем запуске Microsoft Excel этот файл открывается авто- матически. Использование относительных ссылок Например, вы хотите создать макрос, который записывает ваше имя в любую выделенную ячейку, а фамилию в ячейке не- посредственно под ней. Поскольку нужно, чтобы макрос воздействовал на любую выделенную ячейку, необходимо выбрать эту ячейку до включе- ния макрорекордера. Предположим, что это ячейка Е6. После то- го, как вы начали запись макроса и ввели свое имя в выделенную ячейку, вам надо будет выделить ячейку Е7 и ввести свою фами- лию. Если вы хотите выполнить данный макрос в другом столб- це таблицы, то вы выделяете, например ячейку D2, а затем запус- каете макрос. При этом ваше имя записывается в ячейку D2. А фамилия в ячейку E7. Данную проблему позволяют решить относительные ссыл- ки. * Прежде чем вносить в выделенную ячейку свое имя, на па- нели инструментов Остановка записи необходимо щелкнуть на кнопке Относительная ссылка (кнопка должна быть утоплена). Теперь, когда вы будете записывать макрос, все выделенные ячейки запишутся относительно заданной позиции. Для многих макросов не имеет значения, отмечена опция Относительная ссылка или нет. На работу макросов, которые не производят изменений в отдельных ячейках или группах яче- ек, установка этих опций не влияет. Например, макрос, который отключает линии сетки и изменяет расположение страницы, бу- дет работать одинаково, независимо от состояния опции Относи- тельные ссылки. 3. ПОРЯДОК ВЫПОЛНЕНИЯ 1. Получить задание у преподавателя. 2. Создать макрос. 127 3. Назначить способ быстрого запуска макроса в соответст- вии с вариантом. 128 4. ЗАДАНИЕ Вариант 1 Таблица умножения 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 8 9 10 2 0 2 4 6 8 10 12 14 16 18 20 3 0 3 6 9 12 15 18 21 24 27 30 4 0 4 8 12 16 20 24 28 32 36 40 5 0 5 10 15 20 25 30 35 40 45 50 6 0 6 12 18 24 30 36 42 48 54 60 7 0 7 14 21 28 35 42 49 56 63 70 8 0 8 16 24 32 40 48 56 64 72 80 9 0 9 18 27 36 45 54 63 72 81 90 10 0 10 20 30 40 50 60 70 80 90 100 5. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Что такое макрос? 2. Как создать макрос с помощью макрорекордера? 3. Как запустить макрос? 4. Как влияет опция относительная ссылка на создание мак- роса? 5. Какие действия необходимо предпринять, чтобы макрос выполнялся в любом месте рабочего листа? 129 Лабораторная работа № 7 Массивы. Элементарные операции с матрицами 1. ЦЕЛЬ РАБОТЫ Целью работы является изучение массивов и получение практических навыков при работе с одномерными и двумерными массивами. 2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ Основные положения Массивом называется последовательность или таблица пе- ременных одного типа, называемых элементами массива. В об- ращении к элементу указывается имя массива и один (если мас- сив одномерный) или несколько (если массив многомерный) ин- дексов. Одномерный массив аналогичен строке или столбцу табли- цы и вектору в математике (рис.1). Рис. 1. Одномерный массив, где А(1), А(2), …, А(n) – элементы одномерного массива А, состоящего из n элементов Двумерный массив аналогичен прямоугольному диапазону ячеек таблицы Excel и матрице в математике (рис 2). Прежде чем использовать массив, его следует описать (объ- явить). Кроме того, для каждого индекса должны быть определе- ны нижняя и верхняя границы, в пределах которых индекс может меняться. Значения элементам присваивается по порядку. Если элементов в массиве больше, чем инициализаторов, то элементы, для которых значения не указаны обнуляются. массив А(n) А А А 130 В(1,1) В(1,2) … … В(1,m) В(2,1) В(2,2) … … В(2,m) … … … … … В(n,1) В(n,2) … … В(n,m) Рис. 2. Двумерный массив, где В(1,1), В(1,2), В(n,m) – элементы двумерного массива В размерностью n ? m Объем оперативной памяти, требуемый для массива, равен произведению количества байтов для одного элемента массива на количество элементов. Размерность массива определяется количеством элементов массива, поэтому размерность может быть задана только целой положительной константой или константным выражением. Раз- мерность массивов предпочтительнее задавать с помощью име- нованных констант, так как при таком подходе для ее изменения достаточно изменить значение константы всего лишь в одном месте программы. Существует два вида массивов – статические и динамиче- ские. Статические массивы. При описании статического одномерного массива задаются верхняя и нижняя границы для индекса, определяющие количест- ва элементов массива, причем заданные границы не могут быть изменены в программе. Динамические массивы. Динамическим называется массив, размер которого может меняться во время исполнения программы. Динамические масси- вы дают возможность более гибкой работы с данными, так как позволяют не прогнозировать хранимые объёмы данных, а регу- лировать размер массива в соответствии с реально необходимы- ми объёмами. Массив 131 Описание массивов Массивы в коде программы объявляются так же, как и пе- ременные. Место, в котором объявляется массив, определяет, где его можно использовать (его область видимости). Если массив объявлен локально для процедуры, то его можно использовать только в этой процедуре. Если массив объявлен в верхней части формы, то его можно использовать во всей форме. Если массив объявлен открытым в стандартном модуле, его можно использо- вать в любом месте проекта. Описание статических массивов Статические массивы на языке программирования Visual Basic for Applications (VBA) описываются в программе при по- мощи ключевых слов Dim и As. Границами являются целые числа в скобках. Между верхней и нижней границами ставится ключе- вое слово To. Одномерные массивы имеют один индекс. Базовый синтаксис одномерного статического массива сле- дующий: Dim Имя_массива (граница1 To граница2) As тип_данных. Здесь важную роль играют следующие аргументы. Dim – это ключевое слово, для объявления массива. Если массив помещается в стандартный модуль, то вместо Dim ис- пользуется слово Public Имя_массива – это имя переменной массива, которое будет использовано для представления массива в программе. Имена массивов подчиняются тем же правилам, что и имена перемен- ных Граница1 – это нижняя граница массива. Гранца2 – это верхняя граница массива. Тип_данных – это тип данных, хранимых в массиве. В большинстве случаев все переменные в массиве относятся к од- ному и тому же типу данных. Если в массиве будут храниться данные разных типов, то можно указать тип Object Например: Dim A(1 To 10) As Integer 132 Dim B(-10 To 10) As String Если в скобках указано только одно целое число, то это – верхняя граница. При этом нижняя граница равна нулю. Например: Dim C(10) As Byte. Этот оператор эквивалентен оператору Dim C(0 To 10) As Byte. Если нужно, чтобы нижней границей массива была единица, то перед первой строкой программы необходимо набрать строку Option Base 1. При этом оператор последнего примера будет эквивалентен следующему: Dim C(1 To 10) As Byte. Значения границ не должны выходить за пределы диапазона значений для данных типа Long. Для описания многомерных массивов (имеющих несколько индексов), указывается несколько границ, через запятую. Например: Dim A(4,4) As Byte Dim B(1 To 5, -5 To -1) As Byte. В данных примерах объявленные массивы А и В являются двумерными и содержат одинаковое количество элементов, рав- ное 5 ? 5 = 25. Число размерностей массива может достигать 60. Описание динамических массивов Динамические массивы используются в том случае, когда количество элементов массива заранее не известно, а определяет- ся в процессе выполнения программы. По окончании работы с динамическим массивом можно освободить память, которую он занимает. Это важно для задач, требующих большого объема оперативной памяти. Описание динамического массива осуществляется в два эта- па: 1. Объявляется массив с использованием оператора Dim, но без указания размерности. Признаком массива являются скобки после его имени. 133 2. В нужном месте программы описывается данный массив с указанием размерности при помощи оператора ReDim, причем в качестве границ можно использовать не только целые числа, но и арифметические выражения. Важно, чтобы к выполнению опера- тора ReDim все переменные в этих арифметических выражениях имели числовые значения. При помощи оператора ReDim можно задавать любые раз- мерности массива. Например: Dim A() As Byte ReDim A(1, 1) ′ двумерный массив A(0, 0)=13 A(1, 1)=14 ReDim A(3, 3, 1 To 3) ′ трехмерный массив. Следует иметь в виду, что при каждом выполнении опера- тора ReDim (то есть при каждом переопределении массива) зна- чения элементов будут потеряны, так как оператор ReDim обну- ляет все элементы массива. Чтобы при переопределении массива значения элементов не пропали, используется ключевое слово Preserve при изменении верхней границы одномерного массива или при изменении верх- ней границы последней размерности многомерного массива. Например: Sub Сохранение() Dim I As Integer Dim J As Integer Dim A() As Integer ′объявление массива ReDim A(2, -5 To 1) ′указание размерности For I = 0 To 2 For J = -5 To 1 A(I, J) = (I+1)*J^2 Next J Next I ReDim Preserve A(2, -5 To 4) ′указание размерности For I = 1 To 2 For J = 2 To 4 A(I, J) = (I + 1)*J^3 Next J Next I 134 End Sub. Работа с массивами Для определения значений нижней и верхней границ масси- ва любой размерности используются функции LBound и UBound соответственно. Например: Используя функции LBound и UBound опреде- лить границы одномерного массива А. Dim Low As Integer Dim Up As Integer Low = LBound(A) ′Low – нижняя граница массива Up = UBound(A) ′Up – верхняя граница массива. Функция UBound необходима, например, когда значение верхней границы одномерного массива неизвестно и при этом необходимо увеличить это значение на определенной число. Для освобождения оперативной памяти, занимаемой дина- мическим массивом, используется оператор Erase. Например: Sub Память() Dim A() As Byte Dim B() As Byte ReDim A(8) ′Память для А: 9 байт Erase A ′Память для А: 0 байт ReDim B(2, 2) ′Память для В: 3*3 = 9 байт End Sub. Для того, чтобы просмотреть выполнение данной програм- мы необходимо после ввода программы "Память" выполнить следующие действия: 1. Дважды выполнив Debug (отладка) > Add Watch (доба- вить контрольное значение), в окне Watches (контрольное значе- ние) сгенерировать строки, соответствующие массива А и В. 2. Кликнуть левой кнопкой мыши в любом месте програм- мы для установки там мигающего курсора. 3. Произвести пошаговое выполнение программы "Память", наблюдая за распределением памяти с помощью окна Watches. Для решения многих математических задач требуются мас- сивы случайных чисел. Случайные числа рассчитываются с по- мощью функции Rnd. 135 Перед серией обращений к функции Rnd должен находиться оператор Randomize. Например: программа, рассчитывающая 10 случайных чисел от 0 до 1: Sub случайные_числа() Dim N As Integer Dim I As Integer Dim S() As Single N = 10 ReDim S(1 To N) Randomize For I = 1 To N S(I) = Rnd Next I End Sub. |