Wend
ОБРАТИТЕ ВНИМАНИЕ: повторное использование функции Dir без аргументов возвращает имя следующего файла из папки, адрес которой был задан до этого (Dir(Path)).
3. Если первую строку предыдущего кода записать в виде
Path = "C:\St\*.xls",
то получим список Excel-файлов.
4. Следующий код проверяет наличие папки и выдает соответствующее сообщение:
Path = "C:\St"
Папка = Dir(Path, vbDirectory)
'возвращает имя папки ("St", если она _
существует, и пусто – в противном случае)
If Папка <> "" Then MsgBox "Папка существует!" _
Else MsgBox "Папка не существует!"
В наших примерах мы не раз использовали для вывода сообщений функцию MsgBox. Рассмотрим её подробнее.
Функция MsgBox выводит на экран диалоговое окно с сообщением и кнопками, а затем возвращает значение типа Integer, указывающее, какую кнопку нажал пользователь.
Синтаксис:
MsgBox (prompt [, buttons ] [, title ] [, helpfile, context ])
Синтаксис функции MsgBox содержит следующие именованные аргументы:
Аргумент | Описание |
prompt | Сообщение в диалоговом окне. Может состоять из нескольких строк. Для разделения строк можно использовать символ возврата каретки (Chr(13)), перевода строки (Chr(10)) или комбинацию этих символов (Chr(13) & Chr(10)) |
buttons | Числовое выражение, представляющее собой СУММУ значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию равно 0 (отображается только кнопка ОК) |
title | Заголовок диалогового окна |
helpfile | Имя файла, содержащего справочные сведения. Если этот аргумент указан, необходимо указать также аргумент context |
context | Номер соответствующего раздела справочной системы. Указывается вместе с аргументом helpfile |
Допустимые значения аргумента buttons:
|
|
Константа | Значение | Описание |
vbOKOnly | Отображается только кнопкаOK | |
vbOKCancel | Отображаются кнопки OKиОтмена(Cancel) | |
vbAbortRetryIgnore | Отображаются кнопки Прервать (Abort), Повторить(Retry) и Пропустить(Ignore) | |
vbYesNoCancel | Отображаются кнопки Да(Yes), Нет (No) и Отмена(Cancel) | |
vbYesNo | Отображаются кнопки Да (Yes) и Нет (No) | |
vbRetryCancel | Отображаются кнопки Повторить (Retry) и Отмена(Cancel). | |
vbCritical | В окне сообщения отображается значок "Критическое сообщение" | |
vbQuestion | В окне сообщения отображается вопросительный знак | |
vbExclamation | В окне сообщения отображается восклицательный знак | |
vbInformation | В окне сообщения отображается знак "Информация" | |
vbDefaultButton1 | Основной является первая кнопка | |
vbDefaultButton2 | Основной является вторая кнопка | |
vbDefaultButton3 | Основной является третья кнопка | |
vbDefaultButton4 | Основной является четвертая кнопка | |
vbApplicationModal | Модальное окно на уровне приложения: чтобы продолжить работу с текущим приложением, необходимо ответить на данное сообщение | |
VbSystemModal | Модальное окно на уровне системы: все приложения будут недоступны до тех пор, пока пользователь не ответит на данное сообщение |
Первая группа значений (0–5) указывает число и тип кнопок, отображаемых в окне диалога.
|
|
Вторая группа (16, 32, 48, 64) задает тип используемого значка.
Третья группа (0, 256, 512) определяет кнопку, которая является основной, а четвертая (0, 4096) – модальность окна сообщения. При определении значения аргумента buttons следует суммировать не более одного значения из каждой группы.
Возвращаемые значения при нажатии кнопки:
Константа | Значение | Нажатая кнопка |
vbOK | OK | |
vbCancel | Отмена (Cancel) | |
vbAbort | Прервать (Abort) | |
vbRetry | Повторить (Retry) | |
vbIgnore | Пропустить (Ignore) | |
vbYes | Да (Yes) | |
vbNo | Нет (No) |
Примеры:
1. Команда: MsgBox "Случайные числа разыграны!"
выводит на экран диалоговое окно с одной кнопкой ОК и стандартным заголовком Excel:
2. Это же окно с информационным значком и другим заголовком:
MsgBox "Случайные числа разыграны!", _
vbDefaultButton1 + vbInformation, "Случайные числа"
3. Фрагмент кода с диалогом о замене существующего файла:
1) | Path = "C:\St\Случайные числа.xls" |
2) | Filename = Dir(Path) |
3) | If Filename <> "" Then |
4) | 'В переменной Сообщение задается структура диалогового окна: |
5) | Сообщение = vbYesNo + vbQuestion + _ vbDefaultButton1 |
6) | 'Выводит сообщение: |
7) | Кнопка = MsgBox(("Файл " & Filename & _ " уже существует. Заменить его?"), _ Сообщение) |
8) | Select Case Кнопка |
9) | Case vbYes |
10) | MsgBox "Нажата кнопка Да!" |
11) | Case vbNo |
12) | MsgBox "Нажата кнопка Нет!" |
13) | End Select |
14) | Else |
15) | MsgBox "Файл " & Filename & " не найден!" |
16) | End If |
Комментарии к программе:
ü 5-ю строку можно записать в следующем виде:
Сообщение = 4 + 32
По субъективному мнению автора, эта запись нежелательна, так как она неинформативна.
ü Аналогично можно было бы записать 9-ю и 11-ю строку (через возвращаемые значения):
Case 6
Case 7
Согласитесь – код совершенно нечитабельный!
ü Вместо конструкции Select Case можно было бы воспользоваться управляющей структурой If-Then-Else. Тогда вместо строк (8) – (13) запишется следующий код:
If Кнопка = vbYes Then
MsgBox "Нажата кнопка Да!"
Else
MsgBox "Нажата кнопка Нет!"
End If