Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛАБ_информатика_5_A5

.pdf
Скачиваний:
9
Добавлен:
12.03.2015
Размер:
953.75 Кб
Скачать

Currency (денежный)

8 байт

От -922 337 203 685 477,5808 до

 

 

922 337 203 685 477,5807

Decimal (десятич-

14 байт

±79 228 162 514 264 337 593 543 950 335

ный)

 

без десятичных разрядов;

 

 

±7,9228162514264337593543950335 с 28

 

 

десятичными разрядами

Date (дата)

8 байт

От 1 января 100 года до 31 декабря 9999

 

 

года

Object (объект)

4 байта

Ссылка на любой объект

String (строковый

10 байт + 1

От 0 до приблизительно 2 млрд. символов

переменной длины)

байт на

 

 

символ

 

String (строковый

Длина

От 0 до приблизительно 65 400 символов

фиксированной дли-

строки

 

ны)

 

 

Variant (универсаль-

16 байт

Любое числовое з начение из диапазона

ный числовой)

 

типа Double

Variant (универсаль-

22 байта +1

Тот же диапазон, что и для строкового

ный тек стовый)

байт на

типа с переменной длиной

 

символ

 

1.Создайте новую процедуру под именем ЗнаюВашеИмя.

2.Введите код процедуры

Dim sName As String

sName = InputBox("Введите ваше имя: ")

MsgBox "Привет, " & sName

Полный код процедуры должен иметь следующий вид

Public Sub ЗнаюВашеИмя()

Dim sName As String

sName = InputBox("Введите ваше имя: ") MsgBox "Привет, " & sName

End Sub

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

4.Нажмите клавишу <F5> для выполнения процедуры. На экране появится окно вво да.

5.Введите свое имя и нажмите клавишу < Enter>. Окно ввода за-

кроется, и появится о кно сообщения, содержащее ваше имя.

6. Щелкните на кнопке ОК. Вы вернетесь в редактор Visual Basic. Если не указан тип данных, то по умолчанию VBA применит тип

Variant. Но ни один тип данных не требует 16 или 22 байт для со хране - ния значений переменной. Кроме того, время выполнения процедур VBA также зависит о т объявленных (или необъявленных) типов дан-

21

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

1.Создайте новую процедуру с названием ПримерПеременных.

2.Введите следующий ко д процедуры:

Dim StartTime

Dim EndTime

Dim i

Dim j

StartTime

= Now()

For i = 1

To 100000000

j = i + 1

 

Next i

 

EndTime =

Now()

MsgBox "Начало выполнения: " & StartTime &

vbNewLine

& "Конец выполнения: " & EndTime

3.Так как для переменных не объявлен тип данных, то все они по умолчанию имеют тип Variant.

4.Нажмите клавишу <F5> для выполнения процедуры. Выполнение этой процедуры займет несколько секунд. Запомните длительность выполнения процедуры (Разность между началом выполнения и концом

выполнения процедуры).

5.Щелкните на кнопке ОК, ч тобы закрыть окно сообщения.

6.Измените ко д процедуры следующим образом:

Dim StartTime As Date Dim EndTime As Date Dim i As Long

Dim j As Long StartTime = Now()

For i = 1 To 100000000 j = i + 1

Next i

EndTime = Now()

MsgBox "Начало выполнения: " & StartTime & vbNewLine & "Конец выполнения: " & EndTime

7.Снова нажмите клавишу <F5 > для выпо лнения процедуры. Сравните время выпо лнения процедуры теперь и ранее — оно уменьшилось примерно в два раза.

8.Щелкните на кнопке ОК, чтобы закрыть о кно сообщения.

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

22

Тип данных

Короткий префикс

Длинный префикс

Array (массив)

а

ary

Boolean (булевый, логический)

f

bin

Byte (байт)

b

bit

Currency (денежный)

с

cur

Date/Time (дата/время)

dt

dtm или dat

Double (двойной точности)

d

dbl

Integer (целое)

i

int

Long (длинное целое)

1

lng

Object (объект)

o

obj

Single (одинарной точности)

 

sng

String (строковый)

s

str

Variant (универсальный)

v

var

17. Примеры объявления переменных различных типов.

Обратите внимание на объявление строковых переменных — если вам известно максимальное число символов в строке, то э то число мо ж- но указать в объявлении переменной.

Вследующем листинге присутствую т строки, которые начинаю тся

содинарной кавычки ('). Э то строки комментариев, которые использу-

ются для пояснения ко да процедур. При выпо лнении процедур комме н- тарии игнорируются.

Объявления переменных

1:'Следующие строки объявляют переменные

2:Dim StudentID

3:Dim iNumberOfStudents as Integer

4:Dim dtTestDate as Date

5:'Далее объявляется строковая переменная произвольной длины

6:Dim sLastName as String

7:'Следующая строка объявляет строковую пере-

менную

8:'фиксированной длины в 2 символа

9:Dim sState as String * 2

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

После объявления переменных им можно присвоить значения. О т- метим использование порядковых номеров при присвоении значений

элементам массива.

Присвоение значений переменным

23

1:Dim iNumber As Integer

2:Dim iTestScore() As Integer

3:Dim i As Integer

4:

5:iNumber = InputBox("Введите число студен-

тов:")

6:ReDim Preserve iTestScore(10)

7:

8:For i =1 To iNumber

9:iTestScore(i) = InputBox("Введите оценку" &

i)

10: Next

Задание

Создайте новую процедуру с именем ПеремИКонст. Создайте переменную с именем sTest типа String. Создайте константу с именем iNumber типа Integer и положите ее равной 2. Установите значение переменной sTest как "Это простой тест". Добавьте в

процедуру следующие две строчки кода , чтобы вывести на экран знач е- ния переменной sTest и константы iNumber:

MsgBox "Значение переменной sTest: " & sTest MsgBox "Значение константы iNumber: " & iNumber

Выполните процедуру.

18. Функция MsgBox

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

Полный синтаксис функции MsgBox:

MsgBox(Prompt [, Buttons] [,

Title] [, Help-

File, Context])

 

Единственным обязательным аргументом для MsgBox является аргумент Pro mp t , который может быть любым строковым выражением и содержит информацию, выводимую в диалоговом окне. Все другие а р- гументы являю тся необязательными (об этом говорят квадратные ско б- ки, в ко торые заключены эти аргументы вместе с разделяю щими запятыми).

24

Аргумент Title содержит строку для заголовка диалогового окна. Без э того аргумента в заголовке будет выведено наименование host - приложения, из которого запускается программа на VBA.

Аргумент HelpFile — это строковое выражение , содержащее имя справочного файла Windows.

Аргумент Context — это численное выражение, указывающее раздел в справочном файле, о тносящийся к о тображаемому диалоговому окну, например, 0 обычно относится к о главлению справоч ного файла.

Аргумент Buttons является численным выражением, ко торое задает ко личество и тип кнопок в диало говом окне MsgBox. Buttons указывает также кнопку по умолчанию в диалоговом окне и, содержит ли э то диалоговое окно стандар тные значки Windows: Critical, Information, Exclamation или Question для предупреди-

тельных сообщений и запросов пользователя.

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

Группа

Константа

Значе-

Описание

ние

 

 

 

Группа

vbOKOn ly

0

Отображает только кнопку

1

 

 

OK (установка по умолчанию)

 

vbOKCancel

1

Отображает кнопки ОК и От-

 

 

 

мена

 

vbAbortRetryIgnore

2

Отображает кнопки Стоп,

 

 

 

Повтор и Пропустить

 

vbYesNoCancel

3

Отображает кнопки Да, Нет и

 

 

 

Отмена

 

vbYesNo

4

Отображает кнопки Да и Нет

 

vbRetryCancel

5

Отображает кнопки Повтор и

 

 

 

Отмена

Группа

vbCrit ical

16

Отображает запрещающую

2

 

 

пиктограмму (белый знак × в

 

 

 

красном круге)

 

vbQuestion

32

Отображает предупреждаю-

 

 

 

щую пиктограмму (знак во-

 

 

 

проса)

25

 

vbExclamation

48

Отображает предупреждаю-

 

 

 

щую пиктограмму (восклица -

 

 

 

тельный знак в желтом тре-

 

 

 

угольнике )

 

vbInformat ion

64

Отображает информационную

 

 

 

пиктограмму (знак "i")

Группа

vbDefaultButtonl

0

Первая кнопка — кнопка по

3

 

 

умолчанию

 

vbDefaultButton2

256

Вторая кнопка — кнопка по

 

 

 

умолчанию

 

vbDefaultButton3

512

Третья кнопка — кнопка по

 

 

 

умолчанию

 

vbDefaultButton4

768

Четвертая кнопка — кнопка

 

 

 

по умолчанию

Группа

vbApplicationModal

0

Режим приложения: по льзо-

4

 

 

ватель должен закрыть окно

 

 

 

сообщения перед продолже-

 

 

 

нием работы в текущем при-

 

 

 

ложении

 

vbSystemModal

4096

Системный режим: все при-

 

 

 

ложения недоступны , пока

 

 

 

пользователь не закроет окно

 

 

 

сообщения

До-

vbMsgBoxHelpButton

16384

Отображает кнопку Справка

полни-

vbMsgBoxSetFore-

65536

Делает окно сообщения ок-

тель-

ground

 

ном переднего плана

ная

vbMsgBoxRight

524288

Отображает окно сообщения,

группа

 

 

выровненным по правому

 

 

 

краю окна приложения

Если вы хо тите возвратить значение, надо испо льзовать код, по-

добный следующему:

Dim iResponse As Integer

iResponse = MsgBox("Сохранить изменения в " & ThisWorkbook.Name & "?", vbYesNoCancel + vbExclamation)

Отметим, что оператор MsgBox может быть записан в две строки, хо тя в окне ко да редактора Visual Basic он может располагаться в о дну строку. В VBA символами продолжения строки служит пробел с последующим символом подчеркивания.

Чтобы не ошибиться при вводе значений аргумента кнопки, ис - пользуйте список констант, ко торый появляется после вво да знака "+".

26

Знак "+" используется для объединения неско льких констант при задании сложного аргумента кнопки.

Чтобы просмотреть список всех внутренних констант Visual Basic, откройте с помощью клавиши <F2> окно просмотра объектов Object Browser и выберите класс Constants (Константы). В э том же окне можно найти все внутренние константы Excel.

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

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

Константа

Значение

Нажатая кнопка

 

 

 

vbOK

1

OK

 

 

 

vbCancel

2

Отмена

 

 

 

vbAbort

3

Стоп

 

 

 

vbRetry

4

Повтор

 

 

 

vblgnore

5

Пропустить

 

 

 

vbYes

6

Да

 

 

 

vbNo

7

Нет

 

 

 

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

1.Откройте редактор Visual Basic.

2.Щелкните правой кнопкой мыши на элементе ЭтаКнига в окне проектов Project Explorer.

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

4.Выполните команду Insert Procedure (Вставка Процедура).

5.Введите название процедуры ПримерСообщения и нажмите клавишу <Enter>.

6.Введите следующий ко д процедуры:

Dim iРезультат As Integer

iРезультат = MsgBox("Щелкните на кнопке", vbYesNoCancel)

MsgBox iРезультат

27

7.Нажмите клавишу <F5> для выполнения процедуры. Отобразится окно сообщения, как на рисунке.

8.Щелкните на кнопке Да. Сле-

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

Щелкните на кнопке ОК, второе окно сообщения закроется, и вы вернетесь в редактор Visual Basic.

9. Снова нажмите клавишу <F5 > для выпо лнения процедуры. Теперь в окне сообщения щелкните на кнопке Нет. Во втором окне сообщения отобразится цифра 7. Для возврата в р едактор Visual Basic щелкните на кнопке ОК.

10. Нажмите клавишу <F5> еще раз. В окне сообщения щелкните на кнопке Отмена. Во втором окне сообщения отобразится цифра 2. Щелкните на кнопке ОК.

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

19. Функция InputBox

Синтаксис функции InputBox

InputBox(Prompt [, Title] [,Default] [,XPos] [,YPos] [, HelpFile, Context])

Prompt — это любое строковое выражение . Аргумент Prompt является единственным обязательным аргументом для InputBox; все другие — необязательные.

Title — это строка, используемая в качестве заголовка для окна ввода (как и для функции MsgBox).

Default также является любым строковым выражением и использу-

ется как значение по умолчанию для пользовательского ввода .

Как вы могли уже заметить, диалоговое окно InputBox о тображается в центре экрана. Можно выводить э то окно в другом месте на экране, особенно, если необ ходимо, ч тобы были о ткрыты и оставались вид и- мыми другие диалоговые окна .

Аргументы XPos и YPos могут быть любыми численными выраже - ниями. Эти аргументы позволяю т указать, где в активном окне появляется окно ввода , и являю тся координатами вер хнего левого угла диалогового окна : XPos горизонтальное расстояние о т левого края окна; YPos — это вертикальное расстояние от вер хнего края окна . Оба расстояния измеряются в твипах (t wips); один твип равен 1/20 точки (точка

28

—- э то измерение шрифта печати). Поскольку точка составляет 1/72 часть дюйма, то один твип приблизительно равен 0,0007 дюйма

(0,017мм).

Будьте внимательны при задании по ложения диалогового окна InputBox. Вы можете задать позиции для аргументов XPos и YPos на-

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

Последние два необязательных аргумента для функции InputBox — это HelpFile и Context. Они имеют то же назначение, ч то и подобные аргументы функции MsgBox.

Если вы задаете HelpFile и ли Context, необхо димо задавать оба аргумента (эти аргументы заключены в о дни квадратные скобки). Всякий раз, когда указывается справочный файл для о кна ввода, VBA автоматически добавляет командную кнопку помощи в диало говое окно.

Для иллюстрации использования э той функции выполните сле - дующий пример.

1.Вставьте новую по дпрограмму в текущий модуль и назовите ее

ПримерВвода

2.Введите следующий ко д:

Dim iРезультат As Integer

iРезультат = InputBox("Введите число:") MsgBox iРезультат

ActiveCell.Value = iРезультат

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

3.Нажмите клавишу <F5> для выполнения процедуры. Отобразится окно ввода.

4.Введите число и нажмите клавишу < Enter>. Открывшееся о кно

сообщения покажет введенное вами число.

5.Щелкните на кнопке ОК. Окно сообщения закроется.

6.Перейдите в рабочую книгу. В активной ячейке рабочего листа

вы увидите введенное число.

20. Метод InputBox

Для демонстрации мето да InputBox выполните следующие действия.

29

1.Выполните процедуру ПримерВвода.

2.Введите букву в поле вво да и нажмите <Enter>. Посмотрим, что получится. Так как вы ввели текст, а не число, то процедура отказы - вается работать, — произошла так называемая ошибка выполнения.

3.Щелкните на кнопке End, чтобы закрыть окно сообщения и

вернуться в редактор Visual Basic.

4.Создайте новую процедуру с названием МетодВвод. Э та процедура будет использовать метод InputBox.

5.В новую процедуру введите следующий код:

Dim iРезультат As Integer

iРезультат = Application.InputBox ("Введите число:", , , , , ,

,1)

MsgBox iРезультат

ActiveCell.Value = iРезультат

Запятые в выражении Application. InputBox "бронируют" места для тех аргументов, ко торые мы опустили. Последний аргумент, тип, имеет значение 1. Э то показывает, что допустимыми вводимыми значениями являю тся только числа. Отметь те , что единс т- венное отличие ко да э той процедуры от кода процедуры ПримерВвода заключается в операторе Application.InputBox.

6.Поместите курсор внутри кода процедуры МетодВвод и на - жмите <F5 > для выпо лнения процедуры. Появится окно ввода .

7.Введите букву А и нажмите <Enter>. В о тличие от процедуры ПримерВвода теперь не будет сообщения об ошибке выполнения, а по я- вится окно с сообщением о причине возникшей проблемы — Неверное

число.

8.Для закрытия окна сообщения нажмите клавишу < Enter>.

9.Введите число 7 и нажмите <Enter >. Отобразится о кно сооб-

щения с числом 7. Щелкните на кнопке ОК, чтобы закрыть э то окно. В предыдущем примере мы применили оператор iРезультат= Application.InputBox("Введите чис-

ло:", , , , , , ,1)

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

iРезультат= Application.InputBox("Введите чис-

ло:", Туре:=1)

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]