8. основы программирования на языке Visual Basic for Applications



бет1/5
Дата28.06.2016
өлшемі0.84 Mb.
#163113
түріПрограмма
  1   2   3   4   5



8. ОСНОВЫ ПРОГРАММИРОВАНИЯ
на языке Visual Basic for Applications




Программа – это набор инструкций на машинном языке, которые выполняются последовательно одна за другой. Любая операция, написанная на машинном языке, представляет собой последовательность битов. Каждый бит может принимать одно из двух возможных значений: 0 или 1. Например, действие, записанное в машинных кодах, может выглядеть примерно так:


10111001

01010110

00011001

(Код операции)

(Первый операнд)

(Второй операнд)

Конечно, написать программу в машинных кодах – это крайне трудоемкий процесс. В связи с этим появились языки программирования. Каждый язык программирования содержит набор инструкций, которые описывают те или иные действия на понятном человеку языке. Однако этот текст машина понять не может, поэтому каждый язык программирования имеет свой транслятор. Транслятором называется специальная программа, которая переводит текст программы, написанный на языке программирования, в машинные коды. Различают два вида трансляторов: компиляторы и интерпретаторы. Интерпретатор переводит одну строчку текста программы в машинный код, выполняет ее и тут же “забывает”. Если приходится второй раз обработать строку программы, интерпретатор заново переводит ее. Без интерпретатора такая программа работать не может. В отличие от интерпретатора, компилятор переводит в машинные коды сразу всю программу. Поэтому, откомпилированная программа может храниться и выполняться отдельно от компилятора. VBA является интерпретатором, его относят к объектно – ориентированным языкам высокого уровня. Программа, написанная на этом языке, не имеет единого кода (в отличие от структурных языков программирования). Приложение, написанное на Visual Basic (как и на любом объектно – ориентированном языке), представляет собой совокупность объектов, каждый из которых имеет свой набор свойств, обрамленный методами; они предписывают этим объектам выполнение определенных действий в той или иной ситуации. Схематично программа, написанная на Visual Basic, выглядит примерно так:



Sub Имя_блока (параметры)

Описательная часть

Исполнимая часть

End Sub


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

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


8.1. Основные понятия алгоритмического языка Visual Basic

8.1.1. Алфавит языка


Алфавит языка программирования – набор символов, с помощью которого образовываются выражения, операторы и величины данного языка.

Алфавит языка VBA включает в себя все символы из таблицы кодов (таблица кодов ASCII - американский стандартный код для представления информации). Каждому символу соответствует числовой код от 0 до 255. Символы с кодами от 128 до 255 относятся к расширенной таблице ASCII, в этой области находятся символы национальных алфавитов (например, русского языка) и символы псевдографики для изображения таблиц.

VBA использует следующие подмножества набора символов кода ASCII:


  • Буквы английского алфавита от A до Z и от a до z;

  • Буквы русского алфавита;

  • Цифры арабские от 0 до 9;

  • Шестнадцатеричные цифры - арабские цифры от 0 до 9, и буквы от A до F и от a до f;

  • Символ подчёркивания (ASCII-код 95);

  • Символы-разделители: символ пробела ASCII-32 и все управляющие символы с кодами ASCII от 0 до 31

  • Специальные символы ( + - * / = < > [ ] . , ( ) : ; ^ @ { } $ # )

  • Составные символы (<= >= := )

  • Зарезервированные слова.

8.1.2. Элементы программы

Идентификаторы.


Идентификаторы выступают в качестве имен констант, типов, переменных, процедур, функций, полей в записях и других объектов языка.

Идентификатор может иметь любую длину, однако только первые его 63 символа являются значимыми. Имя или идентификатор должен начинаться с буквы или с символа подчёркивания (“_”) и не может содержать пробелов. После первого символа идентификатора можно, кроме букв, использовать цифры и символы подчеркивания. В идентификаторах можно использовать как строчные, так и прописные буквы (интерпретатор их не различает).


Зарезервированные слова.


Зарезервированные или служебные слова используются самим языком. Поэтому их использование в качестве идентификаторов недопустимо.

Значения.


Это числа (2; 3.25; 7.34567001Е+2), строки символов (“С”; “Ура !”) и др.

Комментарии.


Комментарии предназначены для пояснения текста программы. Они не влияют на выполнение программы. Начинаются комментарии со знака “ “.

Операции и выражения.


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

Константы.


Константа – это идентификатор, имеющий фиксированное значение, которое не изменяется в процессе выполнения программы. Начинается описание константы с оператора Const. Например: Const N = 5

Переменные.


В отличие от константы, переменная может изменять свое значение в процессе выполнения программы. Каждая переменная имеет свой тип, который назначается в описательной части программы. Некоторые типы переменных описаны в таблице 2.1. Переменную можно объявить с помощью оператора Dim следующим образом: Dim I As Integer. В Visual Basic объявление переменных не является обязательной процедурой.

Таблица 2.1.



Тип данных

Диапазон

Boolean

True или False (истина или ложь). Используется в логических выражениях.

Integer

от -32768 до 32767. Целочисленный тип.

Long

от -2147483648 до 2147483647. Целочисленный тип.

Single

от -3.402823Е+38 до -1.401298Е-45 и от 1.401298Е-45 до 3.402823Е+38.

Double

от -1.797693134486232Е+308 до -4.94065645841247Е-324 и от

4.94065645841247Е-324 до 1.797693134486232Е+308.



String

от 0 до 65535 символов.

Переменные, описанные при помощи оператора Dim доступны внутри одного объекта. Другие объекты “не видят” эту переменную. Для того, чтобы сделать эту переменную доступной во всех объектах пользуются зарезервированным словом Public: Public S As String.

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


Частным случаем выражения VBA является арифметическое выражение. Рассмотрим следующее арифметическое выражение:
Знаки арифметических действий




С = (А + В) ^ 2
Переменная Знак присвоения Операнды Константа
Любое арифметическое выражение содержит знак “=“. Это знак “присвоить”, он отделяет переменную от выражения и говорит о том, что значение, полученное в результате вычисления арифметического выражения, будет помещено в эту переменную.

Ниже, в таблице 2.2, приведены некоторые знаки арифметических действий в порядке следования при вычислениях:



Таблица 2.2

Знак (оператор)

Описание



Знак отрицательного числа (унарный минус).

( )

Выражение, записанное в скобках.

^

Возведение в степень.

\

Целочисленное деление

*, /

Умножение и деление.

+, —

Сложение и вычитание.

=

Равно, присвоение

Mod

Остаток от деления

Операторы сравнения используются для обозначения операций сравнения двух чисел. Результатом выполнения операции сравнения является логическое значение ИСТИНА или ЛОЖЬ.

Оператор сравнения

Значение

Пример

= (знак равенства)

Равно

1=B1

< (знак меньше)

Меньше

A1

> (знак больше)

Больше

1>B1

>= (знак больше и знак равенства)

Больше или равно

A1>=B1

<= (знак меньше и знак равенства)

Меньше или равно

A1<=B1

<> (знак больше и знак меньше)

Не равно

A1<>B1



Встроенные функции.


При вычислении различных арифметических выражений часто возникает потребность в использовании сложных математических функций, таких как, синус, косинус, тангенс, логарифм, квадратный корень и др. В таких случаях используют встроенные математические функции. Visual Basic “знает” как их вычислять, поэтому достаточно только знать как они записываются. Каждая встроенная функция имеет свое имя и требует в качестве аргумента один и более параметров, которые записываются после имени функции в скобках. Например, записать в переменную А выражение 3 Sin 2X2. На Visual Basic это будет выглядеть следующим образом:

А = 3 * Sin (2 * X^2)

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


Функция Abs возвращает значение, тип которого совпадает с типом переданного аргумента, равное абсолютному значению указанного числа.

Функция Atn возвращает значение типа Double, содержащее арктангенс числа.

Функция Cos возвращает значение типа Double, содержащее косинус угла.

Функция Exp возвращает значение типа Double, содержащее результат возведения числа e (основание натуральных логарифмов) в указанную степень. Константа e приблизительно равняется 2,718282.

Функции Fix и Int возвращают значение типа, совпадающего с типом аргумента, которое содержит целую часть числа. Обе функции Int и Fix отбрасывают дробную часть числа и возвращают целое значение. Различие между функциями Int и Fix состоит в том, что для отрицательного значения аргумента число функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix ближайшее отрицательное целое число, большее либо равное указанному. Например, функция Int преобразует -8.4 в -9, а функция Fix преобразует -8,4 в -8.

Выражение Fix(число) эквивалентно следующему:

Sgn(число) * Int(Abs(число))

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

Функция Rnd возвращает значение типа Single, содержащее случайное число. Функция Rnd возвращает значение, меньшее 1 и большее или равное нулю. Ниже приведена формула, предназначенная для получения случайных целых чисел в заданном диапазоне:

Int((верхняяГраница - нижняяГраница+ 1) * Rnd + нижняяГраница)

Здесь верхняяГраница представляет максимальное число в диапазоне, а нижняяГраница минимальное число в диапазоне.

Функция Sgn возвращает значение типа Variant (Integer), соответствующее знаку указанного числа.

Функция Sin возвращает значение типа Double, содержащее синус угла.

Функция Sqr возвращает значение типа Double, содержащее квадратный корень указанного числа.

Функция Tan возвращает значение типа Double, содержащее тангенс угла.

Производные математические функции:

Функция Комбинация встроенных функций

Секанс Sec(X) = 1 / Cos(X)

Косеканс Cosec(X) = 1 / Sin(X)

Котангенс Cotan(X) = 1 / Tan(X)

Арксинус Arcsin(X) = Atn(X / Sqr(-X * X + 1))

Арккосинус Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)

Арккосеканс Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) - 1) * (2 * Atn(1))

Арккосеканс Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))

Арккотангенс Arccotan(X) = Atn(X) + 2 * Atn(1)

Гиперболический синус HSin(X) = (Exp(X) - Exp(-X)) / 2

Гиперболический косинус HCos(X) = (Exp(X) + Exp(-X)) / 2

Гиперболический тангенс HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))

Гиперболический секанс HSec(X) = 2 / (Exp(X) + Exp(-X))

Гиперболический косеканс HCosec(X) = 2 / (Exp(X) - Exp(-X))

Гиперболический котангенс HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))

Гиперболический арксинус HArcsin(X) = Log(X + Sqr(X * X + 1))

Гиперболический арккосинус HArccos(X) = Log(X + Sqr(X * X - 1))

Гиперболический арктангенс HArctan(X) = Log((1 + X) / (1 - X)) / 2

Гиперболический арксеканс HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)

Гиперболический арккосеканс HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)

Гиперболический арккотангенс HArccotan(X) = Log((X + 1) / (X - 1)) / 2

Логарифм по основанию N LogN(X) = Log(X) / Log(N)

3.2. Инструкции


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

Инструкция Visual Basic является полной командой. Она может содержать ключевые слова, операторы, переменные, константы и выражения. Любая инструкция относится к одной из следующих категорий:



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

Следующий пример содержит три описания.

Sub ApplyFormat() – описание процедуры

Const limit As Integer = 33 – описание константы

Dim myCell As Range – описание переменной



  • Инструкции присвоения, которые присваивают значение или выражение переменной или константе.

Инструкции присвоения всегда включают знак равенства (=). В следующем примере переменной yourName присваивается возвращаемое значение функции InputBox.

Sub Question()

Dim yourName As String

yourName = InputBox("Как Ваше имя?")

MsgBox "Ваше имя - " & yourName

End Sub


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

3.2.1. Инструкция If...Then...Else. Применение операторов ветвления


Ветвление реализуется с помощью оператора IF.

Оператор ветвления IF.


Блочные структуры If – наиболее эффективные из структур логического ветвления. Их можно применять для создания логических структур практически любой сложности.

В общем виде эта структура выглядит следующим образом:



IF логическое_выражение THEN

блок операторов

END IF

Когда логическое выражение принимает значение истина (true), то выполняется блок операторов, заключенный между операторами IF и END IF. Если логическое выражение принимает значение ложь (false), то этот блок не выполняется и управление переходит к оператору, следующему за оператором END IF.

Структура IF может содержать оператор ELSE:

IF логическое_выражение THEN

блок операторов

ELSE

блок операторов

END IF

Управление переходит к блоку операторов, следующему за ELSE в том случае, если логическое выражение принимает значение ложь (false).

Это был пример одноблочной структуры оператора IF. Одноблочная структура оператора IF преобразуется в многоблочную путем добавления оператора ElseIf. В этом случае структура выглядит следующим образом:

IF логическое_выражение_1 THEN

блок операторов 1

ElseIf логическое_выражение_2 THEN

блок операторов 2

ElseIf логическое_выражение_3 THEN

блок операторов 3

ELSE

блок операторов4

END IF

Когда встречается многоблочная структура IF, VB определяет значение логического выражения 1. Если оно равно true, то выполняется блок операторов 1, если false, то блок операторов 1 полностью пропускается и проверяется значение логического выражения 2 и т.д. Если ни одно из поставленных условий не выполняется, то управление передается блоку операторов 4.

В приведенном ниже примере показано использование как блоковой, так и однострочной форм инструкции If...Then...Else:

Dim Number, Digits, MyString

Number = 53 ' Инициализирует переменную.

If Number < 10 Then

Digits = 1

ElseIf Number < 100 Then



' Условие является истинным, поэтому выполняется следующая инструкция.

Digits = 2

Else

Digits = 3



End If
' Использует однострочную форму для присвоения значения.

If Digits = 1 Then MyString = "Один" Else MyString = "Больше 1"



Инструкция Select Case


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

Синтаксис



Select Case выражение

[Case список Выражений-n

[инструкции-n]] ...

[Case Else

[инструкции_else]]

End Select

В приведенном ниже примере инструкция Select Case используется для анализа значения переменной. Второе предложение Case содержит значение анализируемой переменной и следовательно выполняется только инструкция, связанная с этим предложением:

Dim Number

Number = 8 ' Инициализирует переменную.

Select Case Number ' Анализирует число.

Case 1 To 5 ' Число между 1 и 5.

Debug.Print "Между 1 и 5" ‘Выводит текст в окно отладки

' Это предложение Case является единственным истинным.

Case 6, 7, 8 ' Число между 6 и 8.

Debug.Print "Между 6 и 8"

Case Is > 8 And Number < 11 ' 9 или 10.

Debug.Print "Больше 8"

Case Else ' Другие значения.

Debug.Print "Вне интервала 1 -- 10"

End Select


3.2.2. Применение операторов цикла.


Практически любой алгоритм содержит ряд операторов, которые нужно выполнить несколько раз подряд. Такая операция называется циклом. (Циклом называется участок программы, который выполняется многократно при различных значениях аргументов.) Операторы, которые выполняются циклически (повторяются), называются телом цикла. Цикл может иметь одну или несколько точек входа и обязательно один или несколько выходов. Если цикл не имеет выхода, то алгоритм составлен неправильно.

Для всех операторов цикла характерна следующая особенность: повторяющиеся вычисления записываются всего лишь один раз. Они и называются телом цикла. Вход в цикл возможен только через его начало. Переменные оператора цикла должны быть определены до входа в циклическую часть (т.е. переменным должны быть присвоены какие-либо начальные значения). Не забывайте про условие продолжения цикла. С каждым повторением операторов циклической части (тела цикла) переменная цикла должна увеличиваться (уменьшаться) на заданную величину (шаг). Выход из цикла происходит или по его естественному окончанию, или по оператору перехода goto <метка>. Однако применение оператора безусловного перехода является нежелательным, т.к. это нарушает структурную целостность и наглядность программы. Рекомендуется применять инструкцию Exit.

Если не задать приращения переменной цикла или не предусмотреть выход из цикла, то циклические вычисления будут повторяться бесконечно, произойдёт «зацикливание» программы.

Циклы широко применяются для решения самых разнообразных задач:



  • табулирование функции (нахождение значения функции для аргумента, изменяющегося от начального до конечного значения с заданным шагом);

  • нахождение суммы ряда;

  • вычисление суммы n слагаемых;

  • вычисление произведения n сомножителей (вычисление факториала);

  • приближённое вычисление определённого интеграла (площади фигуры) и т.д.

Visual Basic имеет три оператора цикла.

1. Оператор цикла For.


Наиболее распространенным оператором цикла является оператор FOR.

В общем виде оператор FOR выглядит следующим образом:



FOR счетчик = начало TO конец [STEP шаг]

тело цикла

NEXT счетчик

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

В приведенном ниже примере инструкция For...Next используется для создания строки, содержащей 10 наборов по 10 цифр (от 0 до 9); каждый набор отделяется от следующего одним пробелом. Внешний цикл использует переменную-счетчик, которая уменьшается на единицу при каждом выполнении цикла.

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 ' Цикл выполняется 10 раз.

For Chars = 0 To 9 ' Цикл выполняется 10 раз

MyString = MyString & Chars ' Добавляет цифру в конец строки.

Next Chars ' Увеличивает счетчик

MyString = MyString & " " ' Добавляет пробел.

Next Words

2. Оператор цикла с предусловием (WHILE).


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

В общем виде оператор WHILE выглядит следующим образом:



WHILE условие

тело цикла

WEND

Операторы, содержащиеся в теле цикла, повторяются до тех пор, пока условие не примет значение TRUE (истина). Этот оператор называется «с предусловием», потому что вначале проверяется условие, а после этого выполняются операторы, входящие в тело цикла.

Пример:

В данном примере инструкция While...Wend используется для увеличения переменной-счетчика. Инструкции в цикле выполняются до тех пор, пока указанное условие не True.


Dim Counter

Counter = 0 ' Инициализирует переменную.

While Counter < 20 ' Анализирует значение счетчика.

Counter = Counter + 1 ' Увеличивает счетчик.

Wend ' Завершает цикл While,

' если Counter > 19.

Debug.Print Counter ' Выводит 20 в окно отладки.



3. Оператор цикла DO … LOOP.


Инструкция Do...Loop используется для выполнения наборов инструкций неопределенное число раз. Набор инструкций повторяется, пока условие имеет значение True, либо пока оно не примет значение True.

Синтаксис:



Do [{While | Until} условие]

[инструкции]

[Exit Do]



[инструкции]
Loop

Допустим также другой синтаксис:



Do

[инструкции]

[Exit Do]



[инструкции]

Loop [{While | Until} условие]
Синтаксис инструкции Do Loop содержит следующие элементы:

Условие - числовое выражение или строковое выражение, которое имеет значение True или False. Если условие имеет значение Null,то аргумент условие рассматривается как значение False.

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

В любом месте управляющей структуры Do…Loop может быть размещено любое число инструкций Exit Do, обеспечивающих альтернативные возможности выхода из цикла Do…Loop. Часто используемая вместе с определением некоторого условия (например, If…Then), инструкция Exit Do передает управление инструкции, непосредственно следующей за инструкцией Loop.

Во вложенных циклах Do…Loop инструкция Exit Do передает управление циклу охватывающего уровня по отношению к циклу, в котором она вызывается.

Пример:

В данном примере показано, как можно использовать инструкции Do...Loop. Внутренний цикл Do...Loop выполняется 10 раз, затем логической переменной присваивается значение False, после чего он преждевременно завершается с помощью инструкции Exit Do. Внешний цикл завершается немедленно после проверки значения логической переменной.


Dim Check, Counter

Check = True: Counter = 0 ' Инициализирует переменные.

Do ' Внешний цикл.

Do While Counter < 20 ' Внутренний цикл.

Counter = Counter + 1 ' Увеличивает счетчик.

If Counter = 10 Then ' Если условие истинно.

Check = False ' Присваивает переменной

' значение False.

Exit Do ' Завершает внутренний цикл.

End If

Loop


Loop Until Check = False ' Немедленно завершает внешний цикл.

3.3. Ввод и вывод данных на экран

3.3.1. Функция MsgBox


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

Синтаксис:

MsgBox (prompt[, buttons] [, title] [, helpfile, context])

Здесь prompt - обязательный элемент, строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов и зависит от ширины используемых символов. Строковое значение prompt может содержать нескольких физических строк. Для разделения строк допускается использование символа возврата каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) & Chr(10)).



Buttons- необязательный элемент, числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0.

Title - необязательный элемент, строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения.

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

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

Пример:


В данном примере функция MsgBox используется для вывода окна диалога с сообщением об ошибке и кнопками "Да" (Yes) и "Нет" (No). Основной является кнопка "Нет" (No). Значение, возвращаемое функцией MsgBox, зависит от того, какая кнопка была нажата пользователем. Предположим, что DEMO.HLP является файлом справки, содержащим раздел с номером, равным 1000.
Dim Msg, Style, Title, Help, Ctxt, Response, MyString

Msg = "Обнаружена ошибка. Продолжить?" ' Сообщение.

Style = vbYesNo + vbCritical + vbDefaultButton2 ' Кнопки.

Title = "Пример" ' Заголовок.

Help = "DEMO.HLP" ' Файл справки.

Ctxt = 1000 ' Контекст.



' Выводит сообщение.

Response = MsgBox(Msg, Style, Title, Help, Ctxt)

If Response = vbYes Then ' Нажата кнопка "Да" (Yes).

MyString = "Да" ' Выполняет действие.

Else ' Нажата кнопка "Нет" (No).

MyString = "Нет" ' Выполняет действие.

End If

3.3.2. Функция InputBox


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

Синтаксис:

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Синтаксис функции InputBox содержит следующие именованные аргументы:

Prompt – обязательный элемент. Строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина строки prompt составляет приблизительно 1024 символов и зависит от ширины используемых символов. Строковое значение prompt может содержать нескольких физических строк. Для разделения строк допускается использование символа возврата каретки (Chr(13)), символа перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) & Chr(10)).

Title – необязательный элемент. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения (Excel).

Default – необязательный элемент. Строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым.

Xpos - необязательный элемент. Числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана (в твипах). Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали.

Ypos – необязательный элемент. Числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана (в твипах). Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана.

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

Context - необязательный. Числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile.

Пример ипользования функции:

В данном примере приведены различные способы получения сведений от пользователя с помощью функции InputBox. Если аргументы x и y опущены, окно диалога автоматически выравнивается по центру по соответствующим осям. Переменная MyValue содержит значение, введенное пользователем, если была нажата кнопка OK или клавиша ENTER. Если пользователь нажмет кнопку Отмена, функция возвратит пустую строку.


Dim Message, Title, Default, MyValue

Message = "Введите число от 1 до 3" ' Сообщение-подсказка.

Title = "Пример" ' Заголовок.

Default = "1" ' Значение по умолчанию.



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

MyValue = InputBox(Message, Title, Default)



' Получение справки. Кнопка "Справка" добавляется автоматически.

MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)



' Размещает верхний левый угол окна диалога в точке 100, 100.

MyValue = InputBox(Message, Title, Default, 100, 100)


3.3.3. Использование форм

Объект UserForm


Объект - комбинация кода и данных, которая может рассматриваться как единое целое, например, элемент управления, форма или компонент приложения.

Объект UserForm представляет собой окно или диалоговое окно, являющееся составной частью интерфейса пользователя в приложении.

Семейство UserForms является семейством, компоненты которого представляют все загруженные формы UserForm в приложении. У семейства UserForms имеются свойства Count и Item, а также метод Add. Свойство Count указывает число компонентов в семействе; свойство Item (компонент, используемый по умолчанию) указывает определенный компонент семейства; метод Add помещает в семейство новый компонент UserForm.

Синтаксис:



UserForm

UserForms[.Item](индекс)

Прототип индекс представляет собой значение типа Integer в диапазоне от 0 до UserForms.Count – 1. Item -- это используемый по умолчанию компонент семейства UserForms, поэтому его можно не указывать.

Формы пользователя имеют свойства, определяющие внешний вид, как например, положение, размер, цвет и реакция на события.

Формы пользователя также могут реагировать на события, инициированные пользователем или запущенные системой. Например, пользователь может написать подпрограмму обработки события Initialize (Инициализация) для UserForm, чтобы инициализировать переменные уровня модуля до того, как UserForm будет выведена на экран.

Помимо свойств и событий для программной обработки форм пользователя могут использоваться методы. Например, можно использовать метод Move для изменения положения и размера формы UserForm.

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

Доступ к семейству элементов управления формы UserForm осуществляется с помощью семейства Controls. Например, чтобы скрыть все элементы управления формы UserForm, можно использовать код, подобный следующему:
For Each Control in UserForm1.Controls

Control.Visible = False

Next Control

Метод Show


Метод Show выводит на экран объект UserForm. Синтаксис: [объект.]Show

Необязательный прототип объект представляет собой объектное выражение, значением которого является один из объектов, перечисленных в списке "Применение". Если этот элемент синтаксиса опущен, предполагается, что объектом является форма UserForm, связанная с активным модулем UserForm.

Когда UserForm выведена на экран, другие формы данного приложения недоступны, однако это не относится к другим приложениям.





Достарыңызбен бөлісу:
  1   2   3   4   5




©dereksiz.org 2023
әкімшілігінің қараңыз

    Басты бет