Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Excel_new.doc
Скачиваний:
97
Добавлен:
22.02.2015
Размер:
5.05 Mб
Скачать
      1. Ссылки на внешние библиотеки

Выполним эксперимент. Пусть нам требуется многократно исполнять одну и ту же оптимизационную процедуру, например из-за того, что меняются некоторые параметры функционала. Для решения проблемы многократного повтора поиска решения следует записать макрос, что мы и сделаем. В результате мы получим макрос, содержащий ссылки на функцию Solver, например следующий:

Sub Макрос3()

SolverOk SetCell:="$D$8", MaxMinVal:=2, ValueOf:="0", ByChange:="$C$2:$C$7"

SolverSolve

End Sub

Здесь функционал формируется в ячейке D8, а варьируемые параметры - в блоке C2:C7.

Попытаемся повторить макрос: Сервис/Макрос/Макрос3/Выполнить .

Рис. 4.72. Ошибка компиляции

Мы потерпели фиаско. На экране появляется панель (рис. 4.2), информирующая нас о том, что не определена процедура или функция SolverOk. Как же так? Мы только что пользовались этой процедурой, а она не определена? Все дело в том, что в Visual Basic не подключена ссылка на библиотеку, где находится набор процедур Solver. Для ее подключения необходимо установить соответствующий флажок ссылок (рис. 4.3). Теперь макрос можно повторять многократно.

Рис. 4.73 Ссылка на Solver

С ледует отметить, что если бы мы попытались активизировать библиотеку Solver до первого выполнения процедуры "Поиск решения", мы не смогли бы найти ее на панели ссылок. Отсюда тестовый прогон процедуры является неплохим подспорьем поиска библиотеки.

Примеры

1. Скалярное произведение векторов (столбцы Excel) разной размерности

Программный модуль

Примечания

Function Scalar(A, B) As Single

А,В имеют тип Variant.

Dim n1 As Single, n2 As Single, n As Single

Описываются все переменные.

n1 = A.Rows.Count

Число строк в объекте А.

n2 = B.Rows.Count

Число строк в объекте В.

n = Application.Min(n1, n2)

Используется функция Excel.

Scalar = 0

For i = 1 To n

Scalar = Scalar + A(i) * B(i)

Объекты А и В рассматриваются как массивы.

Next i

End Function

2. Поэлементное произведение массивов

Программный модуль

Примечания

Function element_pr(A, B) As Variant

Возвращается массив-строка.

Dim n1, n2 As Single, n As Single

Dim C() As Single

Начальное описание рабочего массива.

n1 = A.Rows.Count

Число строк в объекте А.

n2 = B.Rows.Count

Число строк в объекте В.

n = Application.Min(n1, n2)

Минимальное число строк.

ReDim C(1 To n)

Динамическая размерность. По умолчанию начальный индекс равен нулю, здесь - единица.

For i = 1 To n

C(i) = A(i) * B(i)

Объекты А и В рассматриваются как массивы.

Next i

element_pr = C

Присвоение ссылки на объект.

End Function

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]