
- •2. Блок ввода-вывода.
- •3. Логический блок.
- •4 . Блоки начала и конца блок-схем
- •5.Соединительные блоки
- •Однострочный if.
- •Блочный if.
- •Как назначить макрос кнопке размещенной на рабочем месте так, чтобы щелчок на этой кнопке заставлял выполнить нужный макрос?
- •Создание собственного кода программы.
- •Первая программа на vba. Воспользуемся третьим сценарием. По пунктам запишем наши действия.
- •Как запустить нашу программу из редактора vbа на выполнение?
- •Как из окна редактора попасть на рабочий лист?
- •Где хранятся программы?
- •Циклические алгоритмы.
- •Рассмотрим циклы 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)
- •Флажок или индикатор (Check Box)
- •Полоса прокрутки (ScrollBar)
- •Пример1. Программа «скорость».
- •Пример 2. «Утоляем жажду».
- •Элемент управления «рисунок» (Image)
- •Элемент управления «список» (ListBox)
- •Поле со списком, или комбинированный список(Combobox)
- •Пример использования.
- •Static – объявление переменной статической.
- •Дополнительные элементы управления.
- •Работа с файлами последовательного доступа
- •Открыть файл последовательного доступа можно в трёх режимах:
- •Открытие файла.
- •Закрытие файла ( оператор close).
- •Формат оператора input:
- •Операторы вывода в файл print и write
- •Формат функции eof
- •Input#1, X ‘считываем очередной элемент массива
- •Литература.
Динамические массивы.
Размеры динамического массива могут изменяться во время работы нашей программы. Для того, чтобы массив был динамическим, необходимо объявить массив следующим образом:
вначале с помощью служебного слова Dim мы указываем , что рассматривается динамический массив, задавая имя массива (после имени идут круглые скобки), а затем в программе , с помощью ключевого слова Redim, указываем конкретные размеры массива .
Обращаем внимание на то, что границы в динамических массивах могут быть описаны с помощью перемененных (в нединамических массивах г границы - это константы).
Пример:
Dim ARR()as integer
Redim ARR(1to n ,2 to m)
‘Объявлен динамический целочисленный двумерный массив, первый индекс изменяется от 1 до n, второй – от 2 до m.
Ввод, вывод одномерных массивов.
Пусть задан
одномерный массив
Ai
, i=1,…,(Ai),I=1,n
Блок-схема ввода-вывода имеет вид
Мы рассмотрим фрагменты программ с различными модификациями блока №2.
Введение массива с помощью функции InputBox (ввод «вручную»).
В данном фрагменте кода мы рассмотрим, как объявляется динамический массив и как записывается сам цикл. В остальных примерах будет рассмотрен только оператор №2.
DIM A()
n=InputBox (''Ввести размер массива'') ‘Ввод размера массива
Redim A(1 to n) ‘Задание размера массива
For i=1 to n
A(i) =InputBox ( ''Ввести ''& i & '' элемент'', ''Ввод массива'') ‘блок №2
NEXT
На каждом шаге цикла будет появляться окно ввода следующего вида. Естественно вместо числа 1, которое вы видите сейчас, будет появляться номер соответствующего шага. В текстовое поле вам нужно будет вводить соответствующий элемент массива.
2)Введение массива с помощью генератора случайных чисел
Для генерации случайных чисел используется функция Rnd, значение которой есть случайным (точнее псевдослучайным) числом из интервала (0,1). При записи вида Y=Rnd значение переменной Y может быть равно 0.1 или 0.76 или 0.13 и т.д.
Блок №2 нашей блок-схемы приобретает вид
А(i)=RND
Задача: ввести целочисленный массив с помощью, генератора случайных чисел так, чтобы значения были в пределах от 0 до 20
Randomize
FOR i=1 to n
A(i)=int(21*Rnd)
‘Rnd случайное число из (0;1)
‘Int целая часть числа
NEXT i
Для того, чтобы последовательности случайных чисел были «более» случайными (если внимательно посмотреть на задаваемые последовательности этих «случайных» чисел во время различных запусков программы, то они окажутся одинаковыми!) перед использованием функции Rnd есть смысл использовать инструкцию Randomize, которая позволяет начальное значение псевдослучайных чисел связывать с системным таймером.
Отметим, что если число х лежит в пределах (0;1), то 21х в пределах (0,21), и 21 не включается в интервал.
Рассмотрим фрагмент программы, позволяющий использовать возможности функции MSGBOX для альтернативного выбора ввода вручную или с помощью генератора случайных чисел.
Y=MSG BOX ("ввести вручную", VBYESNO)
If y=VB YES THEN
‘ввод вручную
ELSE
‘ ввод с помощью генератора
END IF
Естественно, что вместо комментариев вам надо вставить описанные выше фрагменты кода.
Вывод массива.
1)Вывод массива в окно отладки
For i=1 to n
Debug.Print "А("; i ;”)=";А(i)
NEXT i
Замечание. Обращаем внимание на то, что при использовании метода Print разделителем в списке могут служить символы «;» и «,».
Символ «;» ставится между элементами списка, когда при выводе между элементами вывода нужен один пробел
Символ «,» следующее значение списка печатается в новой зоне, прижимаясь к её правому краю ( зона – это 14 различных знакомест под символы ).
Если наш список печати заканчивается символом «;» или символом «,», то последующая выводимая информация печатается в той же строке (т.е. нет перехода на новую строку ).
«Пустой» оператор PRINT(то есть такой, в котором нет списка вывода просто Debag.Print) позволяет перейти на новую строку при выводе информации на экран.