
- •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 ‘считываем очередной элемент массива
- •Литература.
Пример.
Range (“C4”). Formula R1C1 =”=R2C3 + R8C4” ‘ в ячейке С4 складывается содержимое ячеек C2(R2C3 вторая строка, третий столбик) и D8(R8C4). Отметим, что адреса ячеек C2 и D8 абсолютные. При использовании относительной или смешанной адресации в квадратных скобках записывается смещение относительно ячейки, в которой записывается формула.
Примеры.
a) Range (“D2”). Formula R1C1= “=R[1}C[-1] + R2C[3]”
По сути, в ячейке D2 записана формула «=С3+G$2»
b) Range (“F8”). Formula R1C1= “=sum(R[-7]C[-2] : R[-2]C)”
По сути, в ячейке F8 записана формула «=sum(D1:F6)». Обратите внимание на
смещение R[-2]C – на две строки вверх и нет смещения по столбцам!
10)FormulaLocal - – возвращает формулу в формате А1 локальной (русскоязычной) версии EXCEL Пример.
Range(“C5”). FormulaLocal = “=сумм(D1: D4)
В ячейке С5 стоит сумма чисел из диапазона D1: D4
Аналогично свойству 10 свойство 11
11)FormulaLocalR1C1 - возвращает формулу в формате R1C1 локальной (не основной, в данном случае русскоязычной ) версии EXCEL
Пример-аналог пункта 10)
Range(“C5”). FormulaLocal R1 C1= “=сумм(R[-4]C[1]:R[-1]C[1])
12)Address – возвращает абсолютный адрес указанного диапазона.
Данное свойство имеет параметры, с помощью которых можно установить любой из известных нам типов адресов относительный, смешанный, абсолютной. По умолчанию - абсолютный адрес
Пример.
MSGBOX “диапазон имеет адрес” & Range (“C1:D8”). Address
Основные методы объекта Range
1) clear очистка диапазона
Range(“А1:B3”).Clear
2) Select – выбрать
Выбирается указанный диапазон. В результате метода Select возникает объект Selection (по сути указанный диапазон )
С объектом Selection можно работать точно так, как с объектом Range: те же свойства и те же методы.
Пример.
Range(“А1:С3”).Select
Selection.Value=20 ‘ А1:B3 заполнены числами 20
n= Selection.Count ‘n=6 – кол-во ячеек в диапазоне. А1:C3
3)Activate – делает активной указанную ячейку, после чего к данной ячейки можно обращаться как к Activecell
Пример
Range(“А1”). Activate
Activecell. Value=33
4)delete - удалить
Range(“A:A”). Delete – удаление столбца А
5)Insert – вставка из буфера обмена на указанное место
Пример
Range(“3:3”). Insert
Вставка пустой строки перед третей, если буфер обмена был пуст.
Предположим, в буфере обмена находится число 87, а рабочий лист имеет вид
|
A |
B |
C |
1 |
4 |
6 |
812 |
2 |
3 |
5 |
7 |
3 |
23 |
4 |
11 |
После строки кода
Range(“В2”). Insert
таблица будет иметь вид
|
A |
B |
C |
1 |
4 |
6 |
812 |
2 |
3 |
87 |
7 |
3 |
23 |
5 |
11 |
6) Сору – копирование в буфер обмена
Range (“А1:А4”). Сору
7)Cut –вырезать в буфер обмена
Range (“А1:А4”). Cut
8)PasteSpecial – специальная вставка
Данный метод имеет несколько параметров. По умолчанию, в указанное место вставляется содержимое буфера обмена.
Range (“А1:А4”).Cut
Range (“D8”). PasteSpecial
В буфере обмена находится содержимое диапазона А1:А4. Оно будет размещено в диапазоне D8:D11.
Аналогично
Range (“D8:D11”). PasteSpecial
9) offset (n,m) - смещение относительно указанной ячейки на n- строк и m- столбцов.
Пример.
Range (A3). Activate
Activecell.offset ( -1 , 5 ).Value = 25
|
A |
B |
C |
D |
E |
F |
1 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
В ячейке F 2 ,будет стоять число 25.
Пример.
Предположим, что ячейка А 1 находится внутри некоторого заполненного информацией диапазона. Нам необходимо написать слово «сумма» в 1-ой строке в столбце «А» рабочего листа сразу после диапазона содержащего ячейку А1.
Нам помогут справиться с данной задачей такие свойства как CurrentRegion и Count.
Range (“A1”). Offset ( O, Range ( “A1” ). CurrentRegion.Columns.Count ). Value = «сумма»
Пример.
Предположим мы хотим протабулировать функцию sin x + arcsin x на отрезке [ 0 ; 0,5] с шагом 0,1 . Результат табуляции вывести на листе 2 в следующей таблице.
|
А |
В |
С |
1 |
табулирование |
|
|
2 |
начало |
конец |
шаг |
3 |
0 |
0.5 |
0.1 |
4 |
аргумент |
функция |
|
5 |
0 |
0 |
|
6 |
0.1 |
0.2 |
|
Программа будет иметь вид:
Option Explicit
‘Все перемещения должны быть объявлены
Sub табулирование ( )
Worksheets ( «Лист 2»). Activate ‘активизация рабочего листа 2 .
Cells.Font.Size = 12 .
‘В каждой из ячеек ввести записи шрифтом № 12 .» Табулирование « шрифт 20, полужирный
With Range ( “A1”). Font
. size = 20
. Fontstyle = “Bold “
End with
Range (“ A 2”). Value = “Начало “
Range (“ B2”). Value = “Конец”
Range (“C2”). Value = “Шаг”
Range (“A3”). Value = 0
‘Если хотим ввести с экрана начало интервала табулирования, то нужна строка кода
‘Range (“A3”). Value = InputBox («Введите начало интервала» )
Range (“B3”). Value = 0.5
Cells (3.3). Value = 0.1
Range (“A4”). Value = «Аргумент»
Range („В4”) = ”функция”
‘Объявление переменных
Dim a as single, b as single, h as single
‘ а – начало, b – конец, h – шаг интервала табуляции
‘все переменные вещественные.
a = Range („A3”).value
b = cells (3,2).value
h = Range („C3”). value
Dim t as single ‘ t – переменная цикла
Dim n as integer, m as integer
’n - № строки, m - № столбца, целочисленные переменные
n = Range (“А5”). Row ‘ n = 5
m = Range (“А5”). Column ‘ m = 1
‘начало цикла табулирования
FOR t = a TO b+0.0001 Step h
‘добавка в 0,0001 даст возможность попасть на конец интервала; при переводе чисел
‘в двоичную систему, из-за округления, мы можем чуть-чуть «не дойти» до нужной точки
Cells (n, m). value = t
Cells (n, m+1). value = sin(t)+ Аpplication. WorksheetFunction.Asin (t)
n=n+1 ‘увеличение № строки на 1
NEXT t
END Sub
Замечание к использованию цикла FOR NEXT. Обращаем внимание на то, что при первом обращении к оператору FOR идет проверка будет ли начальное значение больше конечного, и если будет, то цикл не выполняется ни одного раза, т.е. мы сразу выходим из цикла.
Замечание 2. Шаг цикла может быть отрицательным, в этом случае мы выходим из цикла тогда, когда перееменная цикла становится меньше конечного значения.