Для всех учителей из 37 347 образовательных учреждений по всей стране

Скидка до 75% на все 778 курсов

Выбрать курс
Получите деньги за публикацию своих
разработок в библиотеке «Инфоурок»
Добавить авторскую разработку
и получить бесплатное свидетельство о публикации в СМИ №ФС77-60625 от 20.01.2015
Инфоурок Информатика Другие методич. материалыУчебно-методическое пособие по Visual Basic for Applications

Учебно-методическое пособие по Visual Basic for Applications

библиотека
материалов

hello_html_58e61664.gif


С.Н. Зятикова









Учебно-методическое пособие


по курсу


«Visual Basic for applications»





















Содержание





3

Пункт 2. Арифметические выражения. Математические функции. Логические выражения………………………….……………..


6

Пункт 3. Оператор перехода. Конструкция принятия решений………………………………......................................................


8

Пункт 4. Циклы……………….………………………………………………

11

Пункт 5. Массивы…………………………………………………………….

13

Пункт 6. Пользовательские процедуры………………………………..

16

Пункт 7. Использование стандартных окон операционной системы WINDOWS…………………………………………………………...


19

Пункт 8. Работа со строками…......................................................

20

Пункт 9. Работа с текстовыми файлами…………………..………..

22

Пункт 10. Загрузка формы. Макросы…………………………………..

27

Пункт 11. Объекты и события…………………………………………..

29



Visual Basic for Applications (VBA)


Пункт 1. Введение в VBA. Элементы среды разработки программ VB. Переменные. Две основные функции преобразования типов данных. Константы. Синтаксис оператора присваивания.


Решение какой-либо задачи с помощью компьютера требует ввода в него последовательности команд, которая называется программой. Программы пишутся на том или ином алгоритмическом языке. К настоящему времени разработано множество алгоритмических языков: Pascal, Object Pascal, C, C++, Basic и др.

Мы будем изучать Visual Basic (VB). Выбор языка объясняется тем, что VB используется в популярном пакете Microsoft Office. При работе с офисными приложениями мы будем использовать язык Visual Basic for Applications (VBA), являющийся расширением VB. VBA-код позволяет расширить возможности таких приложений, улучшить пользовательский интерфейс.


Для входа в среду VB надо в Excel выполнить Сервис > Макрос > Редактор VB. В результате откроется окно Microsoft VB, в котором можно выполнять различные действия: ввод и редактирование текста программы, ее отладку и выполнение.

Основные элементы среды VB:

  1. строка меню. В ее состав входят все меню, которые используются при создании программы.

  2. контекстное меню. Служит для удобства выполнения действий, относящихся к той области окна среды VB, в которой находится указатель мыши.

  3. панели инструментов: Standart, Edit, Debug и др. По умолчанию отображается только стандартная панель инструментов Standart.

В окне кода набирается текст программы. Первая и последняя строки программы стандартные


Sub имя ( )

End Sub


Между первой и последней строками набираются остальные строки программы. Ввод строки оканчивается нажатием клавиши Enter.

Например, расчет длины гипотенузы прямоугольного треугольника с катетами 3 и 4 по теореме Пифагора.

Sub Пифагор ( )

a = 3

b = 4

c = Sqr (a ^ 2 + b ^ 2)

End Sub

Sqr – операция извлечения квадратного корня.


Если для наглядности оператор следует разместить на нескольких строках, то для переноса следует использовать символ пробела с последующим символом _. Если несколько операторов следует разместить на одной строке, то между ними надо поставить двоеточие и символ пробела. Комментарии обозначаются апострофом.


Например,

Sub Пифагор ( )

a = 3 : b = 4

c = _

Sqr (a ^ 2 + b ^ 2) ‘согласно теореме Пифагора

End Sub


Перед тем, как использовать переменную, ее рекомендуется описать (объявить).


Синтаксис оператора описания переменной:

Dim переменная [As тип]


В этой конструкции:

  • Dim – ключевое слово, свидетельствующее о том, что объявляется переменная (dimension - размер);

  • As – ключевое слово, используемое при задании типа данных (as - как);

  • Переменная – имя объявляемой переменной;

  • Тип – тип данных для объявляемой переменной.

Одним оператором Dim можно описать несколько переменных, перечислив их через запятую, например,

Dim a, b, c


Если в окне кода отсутствует строка

Option Explicit

то переменные в VB можно не описывать.


Однако часто это приводит к ошибкам в программе, которые трудно «вылавливать». Поэтому рекомендуется среду настроить так, чтобы она требовала описания переменных. Для этого надо:

  1. в среде VB открыть меню Tools (Сервис);

  2. выбрать пункт Options (Параметры);

  3. открыть вкладку Editor (Редактор);

  4. включить опцию Require Variable Declaration (Явное описание переменных), поставив галочку;

  5. нажать Ok.

В результате в окне кода первой будет строка вида

Option Explicit

Если при описании переменной не указан тип данных, то переменной автоматически будет присвоен тип Variant.


Рассмотрим оператор

Dim i, j As Integer


Этот оператор эквивалентен следующему:

Dim i As Variant, j As Integer


Если мы хотим, чтобы обе переменные имели тип Integer, то должны их описать так:

Dim i As Integer, j As Integer

или

Dim i As Integer

Dim j As Integer


Пример. Программа расчета количества дней в 20 веке и определения текущей даты и времени.

Sub Век_20()

Dim d1 As Date

Dim d2 As Date

Dim n As Long

d1 = #1/1/1900# 'начало века

d2 = #12/31/1999# 'конец века

n = d2 - d1 + 1 'количество дней

d1 = Now 'текущая дата и время

End Sub


Часто бывает необходимо преобразовать число в строку. Для этого используется функция Str. Аргументом этой функции является число, значением – строка. Для обратного преобразования (то есть строки в число) используется функция Val. Если функция Val этого сделать не может, то она возвращает 0.


Наряду с переменными в VB используются константы. Существует 2 разновидности констант: пользовательские и встроенные.

Пользовательские константы требуют объявления. Для этого используется оператор вида

Const константа [As тип] = значение


Примеры объявления констант:

Const pi As Currency = 3.1416

Const Message = “Завершение работы

Const Millennium As Date = #1 Jan 2000#

При помощи одного оператора Const можно объявить несколько констант, перечислив их через запятую.

Пример:

Const Min = 0, Max = 1000, Flag As Boolean = False


Встроенные константы не требуют объявления.

Имена встроенных констант начинаются с префикса vb, например, vbFriday (число 6; Friday - пятница).

Встроенные константы Excel имеют префикс xl.


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

переменная = выражение


При выполнении оператора присваивания может происходить преобразование типа данных.


Пункт 2. Арифметические выражения. Математические функции. Логические выражения.

В числе дробная часть от целой отделяется точкой. Существует экспоненциальная форма представления чисел. Например, десятичное число 0.095 = 9.5 10-2 может быть записано в виде 9.5Е-2.

Примеры выражений

Математическое выражение

Арифметическое выражение VB

hello_html_461ee631.gif

5 * x + 12 * y

hello_html_5c573d52.gif

x / y

hello_html_55e4cd3d.gif

y ^ x

hello_html_52884e3.gif

x

hello_html_m686272e2.gif

19.55E-6


Арифметические операции: + (сложение), - (вычитание), * (умножение), / (деление), ^ (возведение в степень), \ (целочисленное деление, то есть деление целых чисел с отбрасыванием остатка), Mod (определение остатка от деления целых чисел, являющегося целым числом).

Приоритет выполнения операций:

  1. возведение в степень (^);

  2. умножение, деления (*, /, \)

  3. определение остатка от деления (Mod);

  4. сложение и вычитание (+, -)

Если тип переменной в левой части оператора присваивания не совпадает с типом, полученным при вычислении значения выражения в правой части оператора присваивания, то при выполнении оператора присваивания производится преобразование типа. Так, при Integer слева и Double справа производится округление результата до целого.

Операции \ и Mod применимы только к целым числам. Результаты выполнения этих операций так же являются целыми числами.


Функции преобразования типов данных


Получаемый тип данных

CBool

Boolean

CByte

Byte

CCur

Currency

CDate

Date

CDbl

Double

CInt

Integer

CLng

Long

CSng

Single

CStr

String

CVar

Variant


Основные математические функции в VB:


Обращение к функции

Возвращаемое значение

Abs(x)

hello_html_m39a89b20.gif

Atn(x)

hello_html_5ab9f0d8.gif

Cos(x)

hello_html_58fed3c0.gif

Exp(x)

hello_html_4f54a8ba.gif

Fix(x)

Результат отбрасывания дробной части х

Int(x)

Наибольшее целое число, не превосходящее х

Log(x)

Натуральный логарифм х

Sgn(x)

1, 0 или -1 в зависимости от знака х

Sin(x)

hello_html_14dba458.gif

Sqr(x)

Квадратный корень из х

Tan(x)

hello_html_m7b2348f3.gif

Аргумент тригонометрических функций задается в радианах, а не в градусах.

Следует помнить, что в VB функция Log(x) рассчитывает натуральный логарифм, а не десятичный, как в Excel. Функция Excel, рассчитывающая натуральный логарифм – Ln(x).

Для округления вещественных чисел используется функция Round(x [, n]). Эта функция возвращает значение арифметического выражения х, округленное до n знаков после десятичной точки. Если второй аргумент отсутствует, то функция Round возвращает целое число и Round(x) = CInt (х), причем если дробная часть значения х равна 0.5, то округление производится до четного числа.

Полезной является функция Rnd, предназначенная для расчета случайных чисел, которые нужны для моделирования случайных явлений.


Помимо арифметических выражений, в VB можно использовать логические выражения.

Пример.

Sub Логика1()

Dim x As Integer, y As Integer

Dim blnA As Boolean

x = 5: y = 2

blnA = x > y ‘ Результат: blnA=True

blnA = x = y ‘ Результат: blnA=False

End Sub

В программе – 2 логических выражения: x > y и x = y.


Более сложные логические выражения составляются с помощью логических операций – Not, And, Or.


Пункт 3. Оператор перехода. Конструкция принятия решений.

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

GoTo метка


В нем метка – это целое неотрицательное число без знака (0, 1, 2, 3, …) или последовательность букв и цифр, начинающаяся с буквы.

Перед оператором, на который должен быть осуществлен переход, ставится метка с двоеточием. Если метка является числом, то как правило, под ней понимается номер строки, на которую осуществляется переход.


Типичной является ситуация, когда в определенном месте программы необходимо выполнить те или иные операторы в зависимости от некоторых условий. Выбор операторов осуществляется с помощью одной из двух конструкций принятия решений – IfThen и Select Case.


Первая конструкция принятия решений - IfThen, называемая условным оператором.

Существует несколько разновидностей этой конструкции.

Простейший условный оператор:

If условие Then оператор

В этой конструкции условие представляет собой логическое выражение. При истинности условия выполняются оператор, находящийся после ключевого слова Then, при ложности оператор не выполняется.

Частным случаем рассмотренной конструкции IfThen является оператор условного перехода, включающий в себя оператор перехода GoTo. Синтаксис:

If условие Then GoTo метка

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

Если при истинности условия требуется выполнить несколько операторов, то следует использовать конструкцию вида

If условие Then

операторы

End If

Этот условный оператор работает следующим образом. Если условие истинно, то выполняется блок операторов, находящийся после ключевого слова Then. Если же условие ложно, то блок операторов не выполняется. Далее выполняется оператор, следующий за служебным словосочетанием End If, вне зависимости от того, выполнен блок операторов или нет.


Рассмотрим следующую конструкцию IfThen:

If условие Then

операторы1

Else

операторы2

End If


Эта конструкция условного оператора работает следующим образом. Если условие истинно, то выполняется блок операторы1, если условие ложно, то выполняется блок операторов операторы2. После выполнения блока операторы1 или операторы2 выполняется оператор, следующий за служебным словосочетанием End If.


Последнюю конструкцию IfThen можно записать в виде:

If условие Then

операторы1

Else : оператор

операторы3

End If

В этой конструкции оператор, стоящий после двоеточия, представляет собой первый оператор блока операторы2, а блок операторы3 – оставшиеся операторы блока операторы2.


В том случае, когда блок операторов нужно выполнять после проверки не одного, а нескольких условий, следует использовать такую конструкцию IfThen:

If условие1 Then

операторы1

ElseIf условие2 Then

операторы2

ElseIf условие3 Then

операторы3

…………………….

[Else

операторыN]

End If

Если условие1 истинно, то выполняется блок операторы1. Если оно ложно, то проверяется условие2, находящееся после ключевого слова ElseIf . При истинности условия2 выполняется блок операторы2, и т.д. Если ни одно из условий не является истинным, то выполняется блок операторыN, расположенный после ключевого слова Else.


Мы рассмотрели конструкции условного оператора. В дополнение к ним рассмотрим функцию

IIf (условие, выражение1, выражение2)

В ней условие представляет собой логическое выражение, а выражени1 и выражение2 – арифметические или логические выражения или строки, которые можно рассматривать как выражения.

Функция IIf возвращает в программу значение выражения1 или выражения2 в зависимости от того, какое значение принимает логическое выражение Условие, True или False.

Например,

Sub pr ()

Dim intA As Integer

Dim strA As String

intA = 6

strA = IIf (intA Mod 2 = 0, “Четное”, “Нечетное”)

End Sub


Вторая конструкция принятия решенийSelect Case. Эта конструкция, называемая оператором выбора, выглядит так:

Select Case выражение

Case значение1

Операторы1

Case значение2

Операторы2

………………………….

[Case Else

операторыN]

End Select


В ней Выражение – арифметическое или логическое выражение или строка. Работает оператор выбора следующим образом. Если Выражение принимает значение1, то выполняется блок операторов операторы1. Если Выражение принимает значение2, то выполняется блок операторы2, и т.д. Если Выражение не равно ни одному из приведенных значений, то выполняется блок операторыN, находящийся после служебного словосочетания Case Else.

В том случае, когда при нескольких значениях Выражения необходимо выполнить один и тот же блок операторов, эти значения нужно перечислить после ключевого слова Case, разделяя их запятыми.

Пример.

Sub Выбор ()

Dim x As Integer

x = 1

Select Case 2*x + 1

Case 1

x = x + 1

Case 2, 3, 4

x = 10

Case Else

x = 20

End Select

End Sub


Пункт 4. Циклы.

Для многократного выполнения блока операторов используются три оператора цикла – ForNext, WhileWend, DoLoop.


Цикл ForNext используется в том случае, когда количество выполнений заданного блока операторов известно заранее. Данная конструкция имеет следующий синтаксис:

For счетчик = начало To конец [Step шаг]

Операторы

Next [счетчик]


Шаг может быть как положительным так и отрицательным числом. По умолчанию шаг равен 1.

В качестве параметров цикла начало, конец и шаг можно использовать не только числа, но и арифметические выражения. Важно, чтобы к моменту выполнения цикла все переменные в этих арифметических выражениях имели числовые значения.

Зачастую требуется досрочно выйти из цикла. В этом случае цикл ForNext записывается в виде:

For счетчик = начало To конец [Step шаг]

Операторы1

If условие Then Exit For

Операторы2

Next [счетчик]


Досрочное окончание цикла обеспечивается оператором Exit For.


Цикл WhileWend применяется в том случае, когда число выполнений операторов цикла заранее неизвестно. Синтаксис этого цикла:

While условие

Операторы

Wend


Если результатом проверки условии является True, то операторы цикла выполняются. В противном случае выполнение цикла оканчивается.


Цикл DoLoop, как и цикл WhileWend,применяется, когда число выполнений операторов цикла заранее неизвестно. Существует четыре разновидности данной конструкции.

Первой разновидностью является цикл Do WhileLoop, имеющий следующий синтаксис:

Do While условие

Операторы

Loop

Если результатом проверки условия является True, то блок операторов выполняется. В противном случае выполнение цикла оканчивается.

Цикл Do WhileLoop эквивалентен рассмотренному ранее циклу WhileWend.

Вторая разновидность конструкции DoLoop – цикл Do UntilLoop – имеет синтаксис:

Do Until условие

Операторы

Loop


Если результатом проверки условия является False, то блок операторов выполняется. В противном случае выполнение цикла оканчивается.

Очевидно, что в циклах Do WhileLoop и Do UntilLoop существует ситуация, когда блок операторов не выполняется ни разу, так как условие окончания цикла проверяется перед выполнением этих операторов.

Третья разновидность конструкции DoLoop – цикл DoLoop While – имеет синтаксис

Do

Операторы

Loop While условие


Блок операторов выполняется до тех пор, пока результатом проверки условия является True. В противном случае выполнение цикла оканчивается.

Четвертая разновидность конструкции DoLoop – цикл DoLoop Until – имеет синтаксис

Do

Операторы

Loop Until условие


Операторы цикла выполняются до тех пор, пока результатом проверки условия является False. В противном случае выполнение цикла оканчивается.


Очевидно, что в последних двух разновидностях цикла DoLoop операторы цикла хотя бы один раз обязательно выполняются, так как условие окончания цикла проверяется после выполнения этих операторов.

Внутри цикла DoLoop может находиться оператор Exit Do, предназначенный для досрочного выхода из цикла.

Для цикла WhileWend не существует оператора досрочного выхода из цикла.


Пункт 5. Массивы.

Массивом называется последовательность или таблица переменных одного типа, называемых эле­ментами массива. В обращении к элементу указыва­ется имя массива и один или несколько индексов.

Прежде чем использовать массив, его следует опи­сать (объявить). Кроме того, для каждого индекса должны быть определены нижняя и верхняя грани­цы, в пределах которых индекс может меняться.

Объем оперативной памяти, требуемый для масси­ва, равен произведению количества байтов для одно­го элемента массива на количество элементов.

Существует два вида массивов — статические и динамические.

Статические массивы. При описании статичес­кого одномерного массива задаются нижняя и верх­няя границы для индекса, определяющие количество элементов массива, причем заданные границы не могут быть изменены в программе.

Статические массивы описываются в программе так же, как и переменные, то есть при помощи ключевых слов Dim и As. Границами являются целые чис­ла в скобках. Между нижней и верхней границами ставится ключевое слово То. Примеры:

Dim arrB(l То 10) As Integer

Dim A(-10 То 10) As String

Если в скобках указано только одно целое число, то это — верхняя граница. При этом нижняя граница полагается равной нулю.

Пример:

Dim arrA(9) As Byte

Если нужно, чтобы нижней границей массивов была единица, то перед первой строкой программы следует набрать строку

Option Base 1

Значения границ не должны выходить за пределы диапазона значений для данных типа Long.


Одномерный массив аналогичен строке или столб­цу таблицы Excel (при стиле ссылок R1C1).

Для описания многомерных массивов (имеющих несколько индексов) используются конструкции, аналогичные рассмотренной. Отличие состоит в том, что указывается несколько границ, через запятую.

Примеры:

Dim A(4, 4) As Byte

Dim B(l To 5, -5 То -1) As Byte

В данных примерах объявленные массивы А и В являются двумерными и содержат одинаковое коли­чество элементов, равное 5x5 = 25.

Двумерный массив аналогичен прямоугольному диапазону ячеек таблицы Excel (при стиле ссылок R1C1).

Обращение к элементу многомерного массива осу­ществляется при помощи имени массива и индексов, перечисленных через запятую.

Примеры обращений:

A(i, j + 1) = 17

В(2, -3) = 25.5

b = C(K, 25)


Пример описания трехмерного массива, содержа­щего 5x5x5 = 125 элементов:


Dim C(l To 5, -5 To -1, 4) As Byte


Максимальное число «измерений» массива очень велико — 60.


Динамические массивы используются в том слу­чае, когда количество элементов массива заранее неизвестно, а определяется в процессе выполнения программы. По окончании работы с динамическим массивом можно освободить память, которую он занимает. Это важно для задач, требующих большого объема оперативной памяти.

Описание динамического массива осуществляется в следующие два этапа.

  1. Объявляется массив с использованием операто­ра Dim, но без указания размерности. Признаком массива являются скобки после его имени.

  2. В нужном месте программы описывается дан­ный массив с указанием размерности при помощи оператора ReDim, причем в качестве границ можно использовать не только целые числа, но и арифметические выражения. Важно, чтобы к моменту выпол­нения оператора ReDim все переменные в этих арифме­тических выражениях имели числовые значения.

Пример:

Sub ДинамическийМаcсив()

Dim A() As Byte 'объявление массива

Dim M As Integer, N As Integer

M = 3

ReDim A(-5 To M ^ 2) 'указание размерности

For N = -5 To M ^ 2

A(N) = N + 30
Next
ReDim A(5) '
указание размерности

N = 0

Do

A(N) =N^3 : N=N+1

Loop Until N ^ 2 > 10

End Sub


Следует иметь в виду, что при каждом выполне­нии оператора ReDim (то есть при каждом переопреде­лении массива) значения элементов массива будут потеряны, так как оператор ReDim обнуляет все эле­менты массива.

Для того чтобы при переопределении массива зна­чения элементов не пропали, следует использовать ключевое слово Preserve.


Пример:

Sub Сохранение1()

Dim J As Integer, arrAO As Integer

ReDim arrA(-5 To 1) 'указание размерности

For J = -5 To 1

arrA(J) = J ^ 2

Next J

ReDim Preserve arrA(-5 To 4) 'указание размерности

For J = 2 To 4

arrA(J) = J ^ 3

Next J

End Sub


Отметим, что в программе ключевое слово Preserve используется при изменении верхней границы одномерного массива. При изменении ниж­ней границы Preserve использовать нельзя.

В случае многомерного массива ключевое слово Preserve можно использовать только при изменении верхней границы последнего «измерения» массива.

Существует возможность определения значений нижней и верхней границ массива любой размернос­ти. Для этого следует использовать функции LBound и UBound соответственно. Описания этих функций мож­но найти в справочной системе, вызываемой нажати­ем клавиши F1.


Пример. Использование функций LBound и UBound для определения границ одномерного массива аггА:

'Low - нижняя граница массива 'Up - верхняя граница массива

Dim Low As Long

Dim Up As Long

Low = LBound(arrA)

Up = UBound(arrA)


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


Для решения многих математических задач тре­буются массивы случайных чисел.

Пример. Программа, рассчитывающая 10 случай­ных чисел от 0 до 1, имеет вид

Sub СлучайныеЧисла()

Dim N As Long

Dim I As Long

Dim S() As Single

N = 10

ReDim S(l To N)

Randomize

For I = 1 To N

S(I) = Rnd

Next I

End Sub


Случайные числа рассчитываются с помощью функции Rnd. В данном случае обращение к ней про­изводится в цикле For...Next.

Перед серией обращений к функции Rnd должен находиться оператор Randomize.


Пункт 6. Пользовательские процедуры.

Блок операторов, предназначенный для много­кратного выполнения в разных точках программы, целесообразно оформить как процедуру. При этом блок записывается один раз и ему присваивается имя с параметрами (формальными). Эта запись блока опе­раторов называется описанием процедуры.

В общем случае процедура имеет:

  • входные параметры, которые считаются задан­ными;

  • выходные параметры, рассчитываемые в ходе выполнения блока операторов.

После того, как произведено описание процедуры, в программу помещаются обращения к этой проце­дуре с нужными параметрами (фактическими). Эти обращения помещаются в те точки программы, в которых по смыслу должен присутствовать блок операторов, оформленный как процедура.

Процедуры делятся на функции и подпрограммы. Функции можно использовать в арифметических и логических выражениях и строках (так как функция возвращает значение в программу); подпрограммы в выражениях и строках использовать нельзя. В этом состоит основное отличие функций от подпрограмм.


Описание пользовательской функции имеет сле­дующий синтаксис:


Function название (формальные_параметры) [As тип]

операторы

End Function

где название — имя функции; формальные_параметры — имена параметров, перечисленные через запятую; тип — тип значения функции; операторы — блок опера­торов.

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


Обращение к функции (находящееся в программе) имеет вид


название (фактические_параметры)

где фактические_параметры — массивы, переменные, константы, числа и/или строки, перечисленные через запятую.


В результате обращения к функции название в про­грамму возвращается значение этой функции, соот­ветствующее заданным параметрам.

Рассмотрим следующий код программы и описа­ния функции, находящийся в одном модуле:

Sub Program1()

Dim L As Long, W As Double

L = Fact(12): W = 4.2 + Fact(10)/2

End Sub


Function Fact(N) As Long ‘N < 13

Dim I As Byte, J As Long

J = 1

For I = 1 To N

J = J * I

Next I

Fact = J

End Function

Первая группа операторов — это программа Program1. Вторая группа операторов — описание функ­ции Fact, которая рассчитывает факториал целого положительного числа N, являющегося формальным параметром.

В программе два обращения к функции Fact, с фактическими параметрами 12 и 10.

Обращение к функции Fact фигурирует в правой части оператора присваивания L = Fact (12). В результа­те выполнения этого оператора значение функции Fact при N = 12 (то есть значение, возвращаемое функцией Fact в программу) присваивается переменной L.

Обращение к функции Fact фигурирует в арифметическом выражении 4.2 + Fact(10) / 2. Значение этого арифметического выражения присваивается переменной W.


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


Sub название (формальные_параметры)

операторы

End Sub

где название — имя подпрограммы; формальные_параметры — имена параметров, перечисленные через запятую; операторы— блок операторов.


Имеется два эквивалентных оператора обращения к подпрограмме:

Call название(формальные_параметры)

название фактические_параметры

где фактические_параметры — список фактических пара­метров, как в обращении к функции. При наличии ключевого слова Call список фактические_параметры заключается в скобки, в отсутствие Call скобки не ставятся.


Вернемся к вопросу объявления переменных.

До сих пор мы говорили о том, как объявлять переменные, но не говорили, где их объявлять. Их можно объявлять в двух местах:

  • внутри программы или процедуры;

  • в верхней части окна кода, которая называется областью общих объявлений модуля.

Место объявления переменной определяет область ее использования. Если, например, переменная объ­явлена в процедуре, то только эта процедура ее видит. Другие процедуры (если они есть) и программа не могут исполь­зовать значение этой переменной и менять его. Такую переменную называют локальной. Говорят также, что переменная видима на уровне процедуры.

Чтобы значение переменной было доступно всем процедурам данного модуля, ее надо объявить в обла­сти общих объявлений модуля. Тогда программа и все процедуры, определенные в данном модуле, могут ис­пользовать значение этой переменной и менять его. Такую переменную называют глобальной. Гово­рят также, что переменная видима на уровне модуля.


Пункт 7. Использование стандартных окон операционной системы WINDOWS

В VB имеется большое количество встроенных процедур, которые отличаются от пользовательских процедур тем, что их описания были запрограммиро­ваны разработчиками Visual Basic. От пользователя компьютера тексты встроенных процедур скрыты.

Встроенные процедуры, как и пользовательские, делятся на функции и подпрограммы.

Со встроенными функциями мы уже неоднократ­но встречались. К ним относятся:

математические функции; функция IIf; и др.

Существует встроенная функция inputBox, предназначенная для ввода информации (в програм­му) с помощью стандартных окон Windows.

Примером встроенной подпрограммы является подпрограмма MsgBox, предназначенная для вывода информации (из программы) в стандартные окна Windows.

Используем встроенные процедуры InputBox и MsgBox в программе расчета длины гипотенузы прямо­угольного треугольника по длинам катетов.

1. В окно кода нового модуля введем программу

Sub Pythagoras()

Dim a As Single

Dim b As Single

Dim с As Single

Dim s As String 1: s = InputBox("Введите длину первого катета и нажмите ОК")

2: а = Val(s)

3: s = InputBox("Введите длину второго катета и нажмите ОК")

4: b = Val(s)

5: с = Sqr(a л 2 + b л 2)

6: s = Str(c)

7: MsgBox s

End Sub

Если запустить программу Pythagoras. Появится окно, предлагающее ввести длину первого катета. С помощью клавиатуры введем,
например, значение 400 (без кавычек) в текстовое поле этого окна и нажмем кнопку ОК. Появится окно, предлагающее ввести длину второго катета. Введем, например, значение 300; после этого нажмем кнопку ОК.

Появится окно, содержащее рассчитанное значение длины гипотенузы. Кликнем на кнопке ОК для закрытия окна и завершения выполнения программы Pythagoras.

Первый оператор программы (с меткой 1) содер­жит функцию inputBox. Она используется для ввода информации с клавиатуры. Возвращает эта функция строку, введенную в текстовое поле первого окна, то есть ''400''. Эта строка присваивается пере­менной s строкового типа.

Второй оператор преобразует значение строки s в число 400 и присваивает это значение переменной а.

Третий оператор присваивает переменной s строку ''300'', введенную в текстовое поле второго окна.

Четвертый оператор преобразует значение строки s в число 300 и присваивает это значение переменной b.

Пятый оператор рассчитывает длину гипотенузы по теореме Пифагора. Полученное значение 500 при­сваивается переменной с.

Шестой оператор преобразует значение 500 в стро­ку. В результате его выполнения переменной s при­сваивается строка ''500''.

Седьмой оператор, представляющий собой обра­щение к подпрограмме MsgBox, выводит на экран дисплея окно с рассчитанным значением 500.

В обращениях к процедурам InputBox и MsgBox фигу­рирует один параметр (строкового типа), который является обязательным. Однако параметров может быть несколько. Назначение необязательных пара­метров можно посмотреть в справочной системе, вызываемой нажатием клавиши F1. Отметим, что в справочной системе VB подпро­грамма MsgBox называется функцией, так как ее можно использовать в арифметических выражениях. При этом в программу возвращается значе­ние типа Integer, соответствующее кнопке, на кото­рой кликнул пользователь.


Пункт 8. Работа со строками.

Строкой будем называть не только последователь­ность символов, заключенную в кавычки, но и пере­менную строкового типа, объявленную с помощью ключевого слова String.

Пример:

Dim A As String

Dim В As String * 15

A = ''Информатика''

В = ''Информатика''

В примере А, В и ''Информатика'' являются строками. Строка как переменная может иметь переменную или постоянную длину.

Строка переменной длины характеризуется тем, что занимаемый ею объем оперативной памяти может меняться в процессе выполнения программы.
В примере А — строка переменной длины. Строка постоянной длины занимает фиксирован­ный объем оперативной памяти. При ее объявлении после ключевого слова String ставится значок * (звездочка) и указывается объем памяти (в байтах), выде­ляемый этой строке. В примере В — строка постоянной длины, занимающая 15 байт оперативной памяти.

Значение, присваиваемое строке постоянной дли­ны, может содержать количество символов как мень­шее указанного в описании (пятнадцати), так и боль­шее. В первом случае в конец строки вместо недоста­ющих символов автоматически будут добавлены про­белы, а во втором случае лишние символы будут авто­матически удалены.

Для объединения двух и более строк используется символ & (амперсанд). Результатом объединения строк является строка.

Пример:

Sub Строки1()

Dim strA As String

Dim strB As String

Dim strC As String

strA = "Строковая "

strB = "переменная"

strC = strA & strB

'Результат: strC = 'Строковая переменная'

strC = strA & "переменная"

'Результат: strC = 'Строковая переменная'

End Sub


Благодаря операции объединения строк &, строку можно рассматривать как выражение, аналогичное арифметическим и логическим выражениям.

При работе со строками используются три функ­ции удаления пробелов:

  • LTrim удаляет все пробелы в начале строки (слева — left);

  • RTrim удаляет все пробелы в конце строки (спра­ва — right);

  • Trim удаляет все пробелы в начале и конце строки.

Пример:

Sub Строки2()

Dim strA As String

Dim strB As String

strA = “ Строковая переменная “

strB = LTrim(strA)

'Результат: strB = “Строковая переменная “

strB = RTrim(strA)

'Результат: strB = “ Строковая переменная”

strB = Trim(strA)

'Результат: strB = “Строковая переменная”

End Sub


Для того чтобы заменить какую-либо часть строки или определенные символы, следует использовать функцию Replace.

Пример:

Sub Строки5()

Dim strA As String

Dim strB As String

strA = "Павел Иванов"

strB = Replace(strA, "Иванов", "Гусев")

'Результат: strB = "Павел Гусев"

End Sub

Для определения количества символов в строке (не считая кавычек) применяется функция Len, при­чем аргументом является строка.

Пример:

Sub Строкиб()

Dim strA As String

Dim intA As Integer

strA = "Строковая переменная"

intA = Len(strA) 'Результат: intA =20

End Sub


Нередко возникает необходимость выделения из строки той или иной ее части. В этом случае следует использовать одну из функций Left, Right и Mid (middle — середина).

Обращения к функциям Left и Right имеют следу­ющий вид:

Left(строка, количество)

Right(строка, количество)

Эти функции возвращают строку, содержащую ука­занное количество символов количество начала и кон­ца строки строка соответственно.

Обращение к функции Mid имеет вид

Mid(строка, номер[, количество])

Эта функция возвращает строку, содержащую ука­занное количество символов строки строка, начиная с символа с заданным порядковым номером. Если количество символов не указывается, то функция Mid возвращает все символы до конца строки.


Пункт 9. Работа с текстовыми файлами.

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

Существует несколько разновидностей файлов. Мы рассмотрим текстовые файлы. Их содержимым является последовательность строк произвольной длины. В конце каждой строки нахо­дится сочетание символов «возврат» и «новая стро­ка», означающее окончание этой строки.

Текстовые файлы мы будем изучать с помощью редактора Блокнот, входящего в состав операционной системы Windows. При этом символы «возврат» и «новая строка» мы не увидим.

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

Open имя For назначение As номер

Здесь имя — полное имя файла (строка, содержащая имя файла с путем и расширением), номер — номер файла, назначение — это ключевое слово Input, Output или Append.

hello_html_m6828e8fd.pngInput означает, что файл открывается для считывания из него информации.

hello_html_m6828e8fd.pngOutput — файл открывается для записи в него информации.

hello_html_m6828e8fd.pngAppend — файл открывается для добавления информации.

В качестве номера файла рекомендуем ис­пользовать переменную типа Integer, значение кото­рой задается с помощью оператора присваивания

номер = FreeFile

Этот оператор должен находиться перед оператором Open; FreeFile — функция, возвращающая в прог­рамму незанятый номер файла.

По окончании работы с файлом его следует зак­рыть с помощью оператора Close. Синтаксис:

Close номер

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

Print #номер, строка


Пусть файл с указанным номером открыт при помощи ключевого слова Output. При выполне­нии оператора Print в начало файла будет записана строка. При повторном выполнении оператора Print в файл добавляется вторая строка и т. д.


Пусть файл с указанным номером открыт при помощи ключевого слова Append. При выполнении оператора Print строка будет добавлена в конец файла.


Рассмотрим два способа извлечения информации из текстового файла, открытого при помощи ключе­вого слова Input.

hello_html_2deb9279.pngПервый способ извлечения информации — с помо­щью оператора Line Input, имеющего синтаксис

Line Input #номер, переменная

Этот оператор производит считывание из файла очередной строки, которая присваивается переменной строкового типа.

hello_html_2deb9279.pngВторой способ извлечения информации из фай­ла — с помощью функции

Input(количество, номер)

Эта функция возвращает в программу строку, содер­жащую указанное количество символов из файла с указанным номером.


В программах Создание и Добавление, приведенных ниже, используются рассмотренные операторы и функции работы с файлами. На примере этих про­грамм рассмотрим и другие полезные операторы и функции.


Sub Создание()

Dim FNamel As String

Dim FName2 As String

Dim FNuml As Integer

Dim FNum2 As Integer

Dim nl As Long

Dim n2 As Long

Dim strA As String 'вспомогательная строка

MkDir(“c:\My Documents\texts”) 'создание папки texts

FNamel = “c:\My Documents \texts\a.txt” 'полное имя 1-го файла

FName2 = “c:\My Documents \texts\b.txt” 'полное имя 2-го файла


'Создание файла a.txt:

FNuml = FreeFile

Open FNamel For Output As FNuml 'открытие файла a.txt

strA = "Создан текстовый файл,”

Print #FNuml, strA

Print #FNuml, “который состоит из нескольких строк.”


'Определение количества символов в файле a.txt:

nl = LOF(FNuml)

Close FNuml 'закрытие файла a.txt

MsgBox “B файле a.txt” & Str(nl) & “ символов”


'Копирование информации из файла a.txt в файл b.txt:

FNuml = FreeFile

Open FNamel For Input As FNuml 'открытие файла a.txt

FNum2 = FreeFile

Open FName2 For Output As FNum2 'открытие файла b.txt

Do Until EOF (FNuml) 'цикл считывания-записи

Line Input #FNuml, strA
Print #FNum2, strA

Loop
Close FNuml
'закрытие файла a.txt


'Добавление новой строки в файл b.txt:

strA = “Добавлена новая строка.”

Print #FNum2, strA


'Определение количества символов в файле b.txt:

n2 = LOF(FNum2)

Close FNum2 'закрытие файла b.txt

FNum2 = FreeFile

Open FName2 For Input As FNum2 'открытие файла b.txt

strA = Input(1, FNum2) 'считывание символа

Close FNum2 'закрытие файла b.txt

MsgBox “В файле b.txt” & Str(n2) & “ символов, “ & “причем первый символ – “ & strA

End Sub


Оператор MkDir(“c:\My Documents\texts”) создает папку texts внутри папки My Documents, входящей в состав операционной системы Windows. (При повтор­ном запуске программы Создание оператор создания папки MkDir следует убрать, например, пометив его апострофом.)

Если операционная система русифицирована, то в тексте программы Создание следует использовать имя папки Мои документы вместо My Documents.

Функция LOF возвращает в программу количество символов в файле, причем символы «возврат» и «новая строка» (которыми оканчивается каждая строка) принимаются в расчет. Аргументом этой функции является номер файла.

Функция EOF, используемая в условии окончания цикла Do Until … Loop, возвращает True при достиже­нии конца файла. Аргументом этой функции являет­ся номер файла.

Подпрограмма MsgBox выводит строку, являющую­ся ее параметром, на экран дисплея. В программе Создание два обращения к MsgBox, поэтому по ходу выполнения программы на экране по очереди появ­ляются окна.



По окончании выполнения программы Создание файлы a.txt и b.txt имеют следующее содержание.


Файл a.txt:

Создан текстовый файл,

который состоит из нескольких строк.

Файл b.txt:

Создан текстовый файл,

который состоит из нескольких строк.

Добавлена новая строка.


Чтобы уничтожать файлы a.txt и b.txt и папку texts по окончании выполнения программы, перед последней строкой (End Sub) следует вставить следующие операторы ликвидации файлов и папки:

Kill(FNamel)

Kill(FName2)

RmDir(“c:\My Documents\texts”)


Рассмотрим программу добавления строки в файл b.txt и запуска редактора Блокнот (Notepad)

Sub Добавление()

Dim FNum As Integer

Dim n As Long

Dim RetVal 'для функции Shell

FNum = FreeFile

'Открытие файла b.txt и ввод новой строки:

Open "c:\My Documents\texts\b.txt” For Append As FNum

Print #FNum , "Добавлена вторая новая строка.”

'Определение количества символов в файле b.txt:

n = LOF(FNum)

Close FNum 'закрытие файла b.txt

MsgBox “В файле b.txt” & Str(n) & “ символов”

'Запуск редактора Блокнот:

RetVal = Shell(“c:\Windows\notepad.exe”,l)

End Sub


Редактор Блокнот (Notepad) запускается с помо­щью функции Shell.

Отметим, что функция Shell позволяет запустить исполняемый файл любой программы, имя которого имеет расширение ехе, в частности, созданный в ав­тономной среде VB.


По окончании выполнения программы Добавление файл b.txt принимает вид


Создан текстовый файл,

который состоит из нескольких строк.

Добавлена новая строка.

Добавлена вторая новая строка.


Одним из результатов выполнения программы Добавление является окно редактора Блокнот (Note­pad), запускаемого функцией Shell. С помощью этого редактора можно увидеть содержимое файла, в част­ности b.txt, и при необходимости создать новый файл или отредактировать существующий.

При открытии файла на добавление информации (с помощью ключевого слова Append) его может не существовать. В этом случае файл создается. При открытии файла на считывание информации (с помо­щью ключевого слова Input) файл, естественно, дол­жен существовать.


Пункт 10. Загрузка формы. Макросы.


Загрузка формы из окна Excel.

Создадим простейшую программу, которая позволит загружать форму из окна Excel.

В окне среды VB выполним Insert (Вставка) > Module (Модуль). В окне кода наберем программу

Sub LoadForma()

UserForm1.Show

End Sub


В этой программе UserForm1 – имя формы. Теперь форму можно загружать из окна Excel. Для этого надо выполнить следующее: Сервис > Макрос > Макросы > строка LoadForma >Выполнить. Выполнив Сервис > Макрос > Макросы > строка LoadForma > Параметры > …., можно назначить сочетание клавиш, запускающее программу LoadForma, то есть загружающее форму UserForm1.

Если вы хотите, чтобы в загруженной форме мигающий курсор находился, например, во втором текстовом поле, то в программу LoadForma после первой строки вставьте оператор

UserForm1.TextBoxB.SetFocus

При этом программа примет вид

Sub LoadForma()

UserForm1.TextBoxB.SetFocus

UserForm1.Show

End Sub


Программу LoadForma можно назвать макросом Excel, разработанным с помощью среды Visual Basic.

Понятие макроса Excel. Два метода разработки макросов.


Макросом (или макрокомандой) Excel называется последовательность команд, снабженная именем, которая может быть выполнена автоматически.

Макрос записывается на языке программирования VBA. Используются два метода разработки макросов:

  1. С помощью среды VB

  2. С помощью макрорекодера Excel.

Первым методом мы уже пользовались, например, в предыдущем пункте. Второй метод более простой, но менее универсальный по сравнению с первым; его обычно рассматривают при изучении Excel. Если вы не знаете, как на VBA записать какое-либо действие, вам следует с помощью макрорекодера создать макрос, выполняющий это действие, а затем изучить получившийся текст макроса на VBA.

Кроме того, макрорекодер облегчает использование первого метода. Дело в том, что программу на VBA часто удобней разрабатывать не «с нуля», а начиная с прототипа, разработанного с помощью макрорекодера.

Работа макрорекодера во многом напоминает запись с помощью обычного магнитофона. Макрорекодер:

1.протоколирует операции, выполняемые пользователем

2.преобразует их в последовательность операторов VBA.

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

  1. установление сетки на листе и задание стиля ссылок R1C1;

  2. Присвоение ячейкам денежного формата;

  3. Выделение ячейки R14C5, то есть Е14.

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

  1. Сервис > Макрос > Начать запись.

  2. В текстовые поля открывшегося окна Запись макроса введем имя макроса и другую информацию (имя макроса, сочетание клавиш для запуска макроса, место хранения макроса (эта книга, все книги и тд))

  3. В окне Запись макроса с заполненными текстовыми полями кликнем на кнопке ОК. В строке состояния Excel появится сообщение Запись, свидетельствующее о том, что запись макроса началась.

  4. Установим отображение сетки в окне Excel и установим тип адресации R1C1.

  5. Зададим денежный формат для всех ячеек активного листа.

  6. Кликнем на ячейке R14C5.

  7. Кликнем на кнопке Остановить запись панели инструментов с двумя кнопками, соответствующей записи макроса или выполним Сервис > Макрос > Остановить запись. Сообщение Запись исчезнет из строки состояния, что говорит об окончании работы макрорекодера.

Способы запуска макроса.

  1. Запуск с помощью присвоенной комбинации клавиш.

  2. Запуск макроса путем выбора имени: Сервис > Макрос > Макросы > строка Имя макроса > Выполнить.

При выполнении макроса компьютер повторяет действия, перечисленные в пунктах 4-6. Для удаления макроса надо выполнить Сервис > Макрос > Макросы > строка Имя макроса > Удалить.


Пункт 11. Объекты и события.

Все современные языки программирования, в частности VB и VBA, являются объектно- и событийно-ориентированными.

Объектно-ориентированный подход подразумевает выделение обособленной части предметной области, обладающей некоторыми характеристиками (свойствами) и способами изменения этих характеристик (методами). Программная реализация этой части предметной области называется объектом.

Событийно-ориентированный подход опирается на следующие два понятия:

  1. «событие» - качественное изменение состояния объекта, возникающее в результате действий пользователя или работы компьютера;

  2. «обработчик события» - набор команд, выполняемых компьютером при возникновении события.

Примеры объектов VBUserForm (Пользовательская форма), CommandButton (Кнопка), CheckBox (Флажок) и др. Пример события – клик на кнопке, результат обработки события – например, запуск программы.

VBA предназначен для создания программ в приложениях Microsoft Office. Отличается от VB наличием специфических объектов. Мы будем рассматривать объекты VBA, собранные в библиотеке Excel и называемые объектами Excel. Например, диапазон ячеек, книга, лист.


Синтаксис возвращения свойства объекта:

Переменная = объект.свойство

Где переменная – имя переменной.


Синтаксис установки свойства объекта:

Объект.свойство = выражение


Синтаксис выполнения метода объекта:

[переменная = ] объект.метод


Как правило, при выполнении метода никакое значение в программу не возвращается. В этом случае часть последнего оператора, находящаяся в квадратных скобках, должна отсутствовать. Однако есть методы, при выполнении которых в программу возвращается некое значение. Но и в этом случае часть последнего оператора, находящаяся в квадратных скобках, может отсутствовать, если возвращаемое значение не представляет интерес (то есть не используется в программе).

Существует иерархия объектов. Высшим в иерархии объектов приложения является объект Application (Приложение), все остальные объекты Excel «вложены» в него.

Полная ссылка на объект состоит из ряда имен, разделенных точками. Ряд начинается с Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку А1 листа Код книги Архив имеет вид:

Application.Workbooks(“Архив”).Worksheets(“Код”).Range (“A1”)

Приводить каждый раз полную ссылку на объект не обязательно. Часто достаточно ограничиться неполной ссылкой, в которой активные в данный момент объекты опускаются.

Если книга Архив является активной, тогда ссылку можно сократить

Worksheets(“Код”).Range (“A1”)

30


Курс повышения квалификации
Курс профессиональной переподготовки
Учитель информатики
Курс профессиональной переподготовки
Учитель математики и информатики
Найдите материал к любому уроку,
указав свой предмет (категорию), класс, учебник и тему:
также Вы можете выбрать тип материала:
Проверен экспертом
Общая информация

Вам будут интересны эти курсы:

Курс повышения квалификации «Информационные технологии в деятельности учителя физики»
Курс повышения квалификации «Организация работы по формированию медиаграмотности и повышению уровня информационных компетенций всех участников образовательного процесса»
Курс повышения квалификации «Сетевые и дистанционные (электронные) формы обучения в условиях реализации ФГОС по ТОП-50»
Курс профессиональной переподготовки «Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
Курс повышения квалификации «Введение в программирование на языке С (СИ)»
Курс профессиональной переподготовки «Управление в сфере информационных технологий в образовательной организации»
Курс профессиональной переподготовки «Теория и методика обучения информатике в начальной школе»
Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»
Курс повышения квалификации «Применение интерактивных образовательных платформ на примере платформы Moodle»

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.