Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП(информатика).doc
Скачиваний:
262
Добавлен:
14.02.2015
Размер:
6 Мб
Скачать
☆
      1. Объявление одномерных массивов

Массив перед первым использованием необходимо объявить с помощью оператора Dim. Объявление массива отличается от объявления переменных тем, что после имени массива в скобках указывается диапазон значения индекса – минимальное и максимальное его значения или только максимальное.

Объявить массив температур, рассмотренный в п. 9.1, можно одним из следующих способов:

Dim t(31) As Integer ‘ Указывается максимальное значение индекса

Dim t(1 To 31) As Integer ‘ Указывается диапазон значений индекса с использованием ключевого слова To

На самом деле в первом случае объявления массива мы указали на один элемент больше. Дело в том, что в VB нумерация элементов массивов по умолчанию начинается с 0 (нуля).

Работа с массивом начинается, как правило, с заполнения его значениями, т. е. с присвоения элементам массива определенных значений. Для заполнения, как правило, используется цикл со счетчиком, где счетчиком является индекс массива. Заполнение можно произвести различными способами.

Задача. Составить проект программы для нахождения в одномерном массиве (размерностью не более 200), состоящем из N действительных чисел, количества элементов, больших 5, среднего значения элементов массива, произведения элементов массива, попавших в интервал (2;4) и минимального элемента массива. Массив заполняется из столбца А Листа1 (начиная с ячейки А2 и до первой пустой ячейки). Результаты выдаются в столбец С.

Sub Кнопка1_Щелкнуть()

Dim a (200) As Single, n, Ct, I As Integer,

Dim Av, S , Min As Single, Mult As Double

Sheets("Лист1").Select

i= 2

Do Until Cells(i, 1) = ""

A (i) = Cells(i, 1).Value

i = i + 1

Loop

N=i-1

Sum = 0: Mult = 1

Min = Areal(1): Ct = 0

For i = 1 To N

Sum = Sum + A(i)

If A(i) > 2 And A(i) < 4 Then Mult = Mult * A(i)

If A(i) < Min Then Min = A(i)

If A(i) > 5 Then Ct = Ct + 1

Next i

Avr = Sum / N

Sheets("Рез-т").Select

Range("c1").Value = " Минимальный элемент массива =" + Format(Min "0.000 ")

Range("c2").Value = " Произведение элементов массива, из интервала (2;4) ="+ Format(Mult , "0.0 ")

Range("c3").Value = " Среднеe значение элементов массива =" + Format(Avr "0.000 ")

Range("c3").Value = " Количество элементов массива, больших 5=" + str(Ct "0.000 ")

End Sub

Для решения задачи определим такие переменные:

A(200) – массив действительных чисел; N- общее количество элементов массива;

Ct - количество элементов массива, больших 5; Sum – сумма всех элементов массива;

Avr - среднеe значение элементов массива; Mult - произведение элементов массива, попавших в интервал (2;4); Min - минимальный элемент массива.

Проект состоит из кнопки расположенной на листе «Лист1», которая вызывает процедуру для работы с массивом. Название кнопки «Кнопка1» заменено на «Работа с массивом ». Текст процедуры приведён ниже.

    1. Макросы

Макрос - это последовательность команд и действий пользователя, записанная и хранимая внутри книги и исполняемая Excel так же, как если бы пользователь производил эти действия. Последовательность действий пользователем выполняется один раз при записи макроса, затем автоматически производится Excel при каждом запуске макроса. Большинство команд, которые можно выполнить с использованием меню, клавиатуры или мыши, можно записать в макрос и выполнить их при необходимости. С помощью макроса можно строить числовые ряды, копировать таблицы, выполнять переход на нужные листы, сохранять информацию, работать в режиме ввода и т.д. Макрос записывается в виде процедуры с заданным именем в модуль. Имя макроса может состоять из букв, цифр и символа подчеркивания ( _ ).

Д

Рисунок 57 - Окно программного кода с макросом

ля записи макроса необходимо: выполнить команду Сервис → Макрос→Начать запись; в окне диалога «Запись макроса» задать имя макроса и сочетание клавиш для быстрого выполнения макроса; затем выполнить нужные действия; после чего закончить запись макроса по команде меню Сервис → Макрос → Остановить запись. При записи макроса используются команды меню, кнопки панели инструментов, ярлычки листов, клавиатура.

Рассмотрим создание макроса на конкретном примере. Необходимо создать макрос с именем «Ввод», выполняющий переход на Лист1 в открытой рабочей книге, ввод в диапазон ячеек А1:С1 заголовков столбцов, в ячейки А2 и В2 исходных данных, в ячейку С2 - результат перемножения значений ячеек А2 и В2 и возврат на Лист2.

Для записи макроса выполняем следующую последовательность действий:

Выбираем команду меню Сервис →Макрос→Начать запись. Откроется диалоговое окно «Запись макроса».

Вводим с клавиатуры имя макроса «Ввод» и задаем сочетание клавиш нажатием на букву «в». В дальнейшем этот макрос будет выполняться при нажатии комбинации клавиш «Ctrl+в».

Щелкаем на кнопке «ОК». Если была активна панель инструментов «Visual Basic», на ней появится кнопка «Остановить запись», говорящая о том, что можно выполнять действия для макроса.

Переходим на Лист1, для этого щелкаем на ярлычке Лист1.

Выделяем ячейку A1 и вводим слово «Цена».

Выделяем ячейку B1 и вводим слово «Количество».

Выделяем ячейку С1 и вводим слово «Стоимость».

Выделяем ячейку A2 и вводим любое число.

Выделяем ячейку В2 и вводим любое число.

Выделяем ячейку С2 и вводим формулу =А2*В2. Щелкаем на кнопке «Остановить запись» или выбираем команду Сервис → Макрос→Остановить запись для завершения записи макроса. В результате наших действий формируется процедура. Чтобы ее просмотреть требуется выполнить команду меню Сервис→ Макрос → Макросы, выбрать в окне диалога макрос «Ввод» и нажать кнопку Изменить. После этого мы попадаем в режим редактора Visual Basic, где в специальном окне отображается программный код макроса (рис.8).

Макрос представляет процедуру, начинающуюся с ключевого слова Sub и заканчивающуюся словом End Sub. Первые строки процедуры являются комментариями, они содержат имя макроса, дату записи, автора и комбинацию клавиш. Далее следуют команды, записанные по правилам VBA. Каждая команда соответствует выполненному действию.

Рассмотрим подробно команды макроса.

Sheets("Лист1").Select 'переход на Лист1. Данная команда состоит из указания на объект Sheets("Лист1") и метода Select для рабочего листа.

Range("A1").Select ‘выделение ячейки A1.

ActiveCell.FormulaR1C1 = "Цена" ‘ввод текста в выделенную ячейку. Команда включает ссылку на активную ячейку, произведенную с помощью свойства ActiveCell, и свойство FormulaR1C1, которому присваивается значение Цена. Подробнее про адресацию ячеек см. в подразделе «Адресация ячеек в Excel».

Range("В1").Select ‘выделение ячейки В1.

ActiveCell.FormulaR1C1 = "Количество" ‘ ввод текста в активную ячейку. Аналогично поступаем с ячейками С1, А2, В2. В ячейку С2 введем формулу:

ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"

Sheets("Лист2").Select ‘переход на Лист2.

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

Использовать комбинацию клавиши Ctrl и выбранной буквы, обращая внимание на регистр русских и латинских букв.

Выполнить команду меню Сервис → Макрос→Макросы. В окне диалога «Макрос» указать в списке имя нужного макроса и щелкнуть на кнопке Выполнить.

В окне редактора Visual Basic выбрать в списке процедур имя макроса и выполнить команду меню Run→ Sub/UserForm,

воспользоваться кнопкой панели инструментов или нажать клавишу F5 .

Задача.Написать программу, подсчитывающую число сотрудников с высшим образованием и суммирующую их годовой доход. Результаты поместить в отдельные ячейки рабочего листа «Штат сотрудников» с поясняющей надписью(), как показано на рис.9.

Для решения данной задачи определим первую пустую ячейку в столбце В (предполагаем, что количество записей в столбце неизвестно выполняем цикл, пока не встретится пустая ячейка в столбце В (т.е.конец списка фамилий: <> ""означает не равно пустой ячейке).). Введем переменную k для подсчета количества сотрудников для счета и переменную s для суммирования доходов. Переменную смещения строк i будем использовать для изменения адресации ячеек, увеличивая каждый раз на единицу. Реализация данной задачи в виде макроса Доходы_ВО():

Sub Доходы_ВО()

Dim k As Integer, s As Double

i = 5 : s = 0 : k = 0

Do While Cells(i, 2) <> ""‘

If Cells(i, 6) = "высшее" Then

s = s + Cells(i, 8)

k = k + 1

End If

i = i + 1

Loop

Range("I1") = " Сумма доходов сотрудников с ВО"+ Range("I2") = Format(s,”0.00”)

Range("J1") = " Количество сотрудников с ВО" +str(k)

End Sub

Для быстрого и удобного запуска макроса на рабочем листе поместим кнопку (или любой графический объект). Для назначения кнопке (или другому элементу управления) щелкните его правой кнопкой мыши и выберите команду «Назначить макрос» в контекстно-зависимом меню.

Frame55