- •2. Блок ввода-вывода.
- •3. Логический блок.
- •4 . Блоки начала и конца блок-схем
- •5.Соединительные блоки
- •Однострочный if.
- •Блочный if.
- •Как запустить нашу программу из редактора vbа на выполнение?
- •Как назначить макрос кнопке размещенной на рабочем месте так, чтобы щелчок на этой кнопке заставлял выполнить нужный макрос?
- •Создание собственного кода программы.
- •Первая программа на vba. Воспользуемся третьим сценарием. По пунктам запишем наши действия.
- •Как из окна редактора попасть на рабочий лист?
- •Где хранятся программы?
- •Циклические алгоритмы.
- •Рассмотрим циклы for … next
- •Найти произведение целых чисел от к до м с шагом 2
- •Циклы с условием do … loop
- •Продолжение знакомства с редактором vba
- •Модули и процедуры.
- •Процедура – подпрограмма
- •Процедура – функция
- •Создание процедур-подпрограмм..
- •Процедура подпрограммы.
- •Как вызвать процедуры из других программ?
- •Передача аргументов в подпрограммы(по ссылке и по значению). Способ1 -Передача по ссылке.
- •Способ2.-Передача по значению.
- •Необязательные параметры в подпрограммах.
- •Процедура функция.
- •Объявления переменных и их области видимости
- •Объявление переменных.
- •Область видимости переменной
- •2) Переменная уровня модуля ( уровня контейнера )
- •Работаем с приложением Excel и его объектами.
- •Объектная модель Excel.
- •Объект Application( приложение в целом).
- •Объект Workbook(рабочая книга)
- •Основные методы объекта workbook
- •Объект Worksheet (Рабочий лист).
- •Основные методы объекта worksheet.
- •Основные свойства рабочих листов
- •Объект Range (диапазон)
- •Основные свойства объекта Range
- •7) Font - шрифт
- •Циклы вида With … Еnd With.
- •Пример.
- •Основные методы объекта Range
- •С объектом Selection можно работать точно так, как с объектом Range: те же свойства и те же методы.
- •Функция Format()
- •Еще раз о функциях val, inputbox Функция Val()
- •Функция InputBox().
- •Задача: проверка на «пустоту».
- •Отладка программ (debugging) Виды ошибок:
- •1)Синтаксические;
- •2)Во время выполнения программы;
- •3)Логические.
- •Точки останова(breakpoints).
- •Пошаговое выполнение программы.
- •Работа со справкой.
- •Окно отладки (Immediate).
- •Окно контрольных значений
- •Массивы
- •Нединамические массивы.
- •Динамические массивы.
- •Ввод, вывод одномерных массивов.
- •Введение массива с помощью функции InputBox (ввод «вручную»).
- •2)Введение массива с помощью генератора случайных чисел
- •Вывод массива.
- •1)Вывод массива в окно отладки
- •2)Вывод массива на рабочий лист
- •3)Вывод массива в окно сообщений
- •Пример1. Найти максимальный элемент в массиве
- •Пример2. Сортировка (упорядочивание) одномерного массива.
- •Двумерные массивы (таблицы или матрицы).
- •Ввод /вывод двумерного массива.
- •1)Ввод с помощью функции Input Box (ввод вручную)
- •2)Ввод с помощью генератора случайных чисел
- •Особенности ввода-вывода двумерных массивов на рабочий лист при работе с vba (excel)
- •Ввод массива
- •Вывод массива на рабочий лист.
- •Обращение к массивам при работе с подпрограммами.
- •Vvod b,n,m,k ‘вызов подпрограммы ввода массива
- •Примеры решения задач, связанных с двумерными массивами.
- •Задача1.Найти сумму элементов под побочной диагональю квадратной матрицы размера n×n.
- •Функции, определяющие границы индексов массивов.
- •Элементы визуального программирования.
- •Панель управления «формы» .
- •Экранные формы.
- •Для того, чтобы вставить форму в наше приложение необходимо выполнить команды:
- •Свойства формы.
- •Этапы разработки визуальных программ.
- •2) Написание кода.
- •Первая визуальная программа «Здравствуй ,мир!»
- •Первый этап ( настраивание свойств формы и элементов управления).
- •Второй этап ( написание кода).
- •Как запустить наше приложение из окна редактора vba?
- •Как сделать так, чтобы наша форма запускалась с рабочего листа?
- •Программа “Курс доллара”.
- •События формы.
- •Переключатель (Option Button)
- •Полоса прокрутки (ScrollBar)
- •Пример1. Программа «скорость».
- •Флажок или индикатор (Check Box)
- •Пример 2. «Утоляем жажду».
- •Элемент управления «рисунок» (Image)
- •Элемент управления «список» (ListBox)
- •Поле со списком, или комбинированный список(Combobox)
- •Пример использования.
- •Static – объявление переменной статической.
- •Дополнительные элементы управления.
- •Работа с файлами последовательного доступа
- •Открыть файл последовательного доступа можно в трёх режимах:
- •Открытие файла.
- •Закрытие файла ( оператор close).
- •Формат оператора input:
- •Операторы вывода в файл print и write
- •Формат функции eof
- •Input#1, X ‘считываем очередной элемент массива
- •Литература.
Как вызвать процедуры из других программ?
1 Способ. Необходимо написать имя процедуры и без скобок через «,» указать фактические параметры, то есть конкретные значения или имена переменных, с которыми нужно сделать нужные вычисления.
2 Способ. Служебное слово CALL <имя> (<список фактических параметров>).
Отметим, что расположение фактических и формальных параметров должно быть соответствующим, то есть переменные должны стоять на нужных нам местах.
Пример:
Public SUAB-деление (a, b, z)
z=a/b
END SUB
…
x=20:x=10
деление х, у, t ’вызов процедуры деления (1 способ вызова)
’t=2
CALL деление (y, x, t) ’вызов прцедуры деления (2 способ вызова)
’t=0,5
Замечание: если формальных переменных нет, то вызов процедуры с использованием служебного слова CALL идет без круглых скобок.
Передача аргументов в подпрограммы(по ссылке и по значению). Способ1 -Передача по ссылке.
При таком способе передачи при вызове подпрограммы могут меняться значения параметров, которые стоят в списке фактических аргументов.
Пример:
z=20
деление 10, 20, z
’переменная z=0,5 ,то есть меняет свое значение после вызова подпрограммы деление.
Такой способ передачи параметров называется передачей по ссылке. Это означает, что в процедуру передается имя переменной, то есть ссылка на ту ячейку памяти, где эта переменная хранится. Поэтому значение переменной после вызова подпрограммы может меняться.
По умолчанию считается, что все переменные, стоящие в списке формальных параметрах заголовка процедуры будут передаваться по ссылке.
Способ2.-Передача по значению.
В этом случае передается только значение переменной на момент вызова процедуры. Процедура не может изменить значение переменной в основной программе, то есть, как будто бы сняли копию переменной и работаем с ней в подпрограмме. Данный способ применяется для ограждения себя от возможного изменения переменных при вызове подпрограммы.
Для передачи аргумента по значению, необходимо при описании данный аргумент в списке формальных параметров в заголовке процедуры, описать с помощью ключевого слова Byval
Пример:
Private Sub_MAPT (Byval a,b, Byval c)
Переменные а,с будут передаваться по значению, в то время, как переменная b предается по ссылке.
Пример вызова:
MAPT x, y, z
'x и z - не меняют значения
'y - может меняться
Досрочный выход из процедуры осуществляется с помощью оператора: Exit Sub.
Рассматриваем пример уточнения корня уравнения с помощью метода половинного деления.
Пусть непрерывная функция (х) принимает на концах отрывка [а;b] значения разных знаков. Это означает, что на данном отрывке обязательно есть корень уравнения (х)=0.
Уточнить корень
с нужной точностью - это значит, что
значения корня отличается от полученного на
величину, которая не превышает заданной точности.
Toch=10
=0.000001
x
а z b
Процедура половинное деление
Public Sub Polovina( Byval a, Byval b , Toch,x)
‘a - левая граница
‘b - Правая граница’
‘a.b- передаются по значению
‘Toch, Х- передаются по ссылке
‘Toch - точность приближения корня
‘Х - приближенное значение корня
If F(a)*F(b)>0 Then MsgBox "Проверте границы" : Exit Sub ‘выше записаны блоки 2, 9, 10
‘Цикл DO… LOOP блоки 3-6
DO
x=(a+b)/2
IF (x)*F(b) > 0 THEN b=x ELSE a=x
LOOP while (b-a)>toch
x-=(a+b)/2
END sub
Блок-схема
1
2
да
9
3
10
4 да
нет
11
5
да 6
7 нет
8
‘Вызов подпрограммы.
Polovina -15,20,0,001,x
Данная строка кода позволяет уточнить корень уравнения на отрезке [-15;20] с точностью до 0,001; значение корня содержит переменная Х. Если на отрезке [-15;20] функция сохраняет свой знак ( то есть на концах отрезка она принимает значения одинаковых знаков), мы получим сообщение: “проверьте границы”.
