Встроенные диалоговые окна

Содержание

Слайд 2

Встроенные диалоговые окна В проектах VBA встречаются две разновидности диалоговых окон:

Встроенные диалоговые окна

В проектах VBA встречаются две разновидности диалоговых окон:
окна

сообщений (MsgBox) и
окна ввода (InputBox).
Они встроены в VBA, и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений выводит простейшие сообщения для пользователя, а окно ввода обеспечивает ввод информации.
Слайд 3

Функция InputBox Выводит на экран диалоговое окно, содержащее сообщение и поле

Функция InputBox

Выводит на экран диалоговое окно, содержащее сообщение и поле ввода,

устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле.
Синтаксис:
InputBox (prompt [, title] [, default] [, xpos][, ypos] [, helpfile, context])
Слайд 4

Аргументы функции InputBox prompt – строковое выражение, отображаемое как сообщение в

Аргументы функции InputBox

prompt – строковое выражение, отображаемое как сообщение в диалоговом

окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символов chr(10), chr(13) и их комбинации
title – строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения
default – строковое выражение, Отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым
xpos – числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали
ypos – числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана
Слайд 5

Аргументы функции InputBox (продолжение) helpfile – строковое выражение, определяющее имя файла

Аргументы функции InputBox (продолжение)

helpfile – строковое выражение, определяющее имя файла справки,

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

Пример InputBox 10: str = InputBox("Введите текст", "пример", "Поле ввода текста")

Пример InputBox

10:
str = InputBox("Введите текст", "пример", "Поле ввода текста")
If Len(str) >

0 Then
MsgBox "Введено:" & vbCr & str, vbExclamation + vbOKOnly
Else
i = MsgBox("Текст не введён!", vbCritical + vbRetryCancel)
If i = vbRetry Then
GoTo 10
Else
MsgBox "Отменено пользователем", vbExclamation + vbOKOnly
End If
End If
Слайд 7

Процедура MsgBox Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим

Процедура MsgBox

Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания

нажатия кнопки пользователем, а затем возвращает значение типа Integer, указывающее, какая кнопка была нажата.
Синтаксис:
MsgBox (prompt [, buttons] [, title] [, helpfile, context])
Слайд 8

Аргументы функции MsgBox prompt – строковое выражение, отображаемое как сообщение в

Аргументы функции MsgBox

prompt – строковое выражение, отображаемое как сообщение в диалоговом

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

Значения аргумента buttons, определяющие кнопки

Значения аргумента buttons, определяющие кнопки

Слайд 10

Значения аргумента buttons, определяющие отображаемые информационные значки

Значения аргумента buttons, определяющие отображаемые информационные значки

Слайд 11

Значения аргумента buttons определяющие основную кнопку Примеры: MsgBox "Пример 1", vbAbortRetryIgnore

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

Примеры:
MsgBox "Пример 1", vbAbortRetryIgnore + vbCritical +

vbDefaultButton1
MsgBox "Пример 2", vbRetryCancel + vbQuestion + vbDefaultButton2
MsgBox "Пример 3", vbYesNoCancel + vbExclamation + vbDefaultButton3
Слайд 12

Возвращаемые значения окна MsgBox Пример 1. i = MsgBox("Нажмите одну из

Возвращаемые значения окна MsgBox

Пример 1.
i = MsgBox("Нажмите одну из клавиш",

vbYesNoCancel + vbInformation + vbDefaultButton1)
Пример 2.
i = MsgBox("Нажмите одну из клавиш", vbAbortRetryIgnore + vbCritical + vbDefaultButton2)
Слайд 13

Типы файлов в VBA

Типы файлов в VBA

Слайд 14

Открытие файла

Открытие файла

Слайд 15

Закрытие файла

Закрытие файла

Слайд 16

Прочие функции для работы с файлами

Прочие функции для работы с файлами

Слайд 17

File System Objects (FSO) FSO позволяет открывать файлы как текстовой поток

File System Objects (FSO)

FSO позволяет открывать файлы как текстовой поток и

читать и писать в них
object.OpenTextFile(filename[, iomode[, create[, format]]])
filename – полный путь к файлу
iomode – режим ввода/вывода
create – Логическое значение, показывающее будет ли создан новый файл, если файл filename не найден (False – по умолчанию)
format – формат открываемого файла. По умолчанию - ASCII
Слайд 18

Значения констант для открытия файлов через FSO iomode принимает следующие значения:

Значения констант для открытия файлов через FSO

iomode принимает следующие значения:
ForReading =

1 – открывает файл для чтения
ForAppending =8 – открывает файл для добавления
format принимает следующие значения:
TristateUseDefault =–2 для открытия файла используются системные установки
TristateTrue =-1 – открывает файл в кодировке Unicode.
TristateFalse =0 – открывает файл в кодировке ASCII
Слайд 19

Открытие файла, как объекта FSO Метод OpenTextFile Sub OpenTextFileTest() Const ForReading

Открытие файла, как объекта FSO Метод OpenTextFile

Sub OpenTextFileTest()
Const ForReading = 1,

ForWriting = 2
Const ForAppending = 8
Const TristateFalse =0
Dim fs, f
Set fs=CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("c:\testfile.txt", ForAppending,TristateFalse)
f.Write "Hello world!"
f.Close
End Sub
Слайд 20

OpenAsTextStream метод Метод открывает файл и делает возможным чтение/запись в него

OpenAsTextStream метод

Метод открывает файл и делает возможным чтение/запись в него
object.OpenAsTextStream([iomode, [format]])
object

– файловый объект
iomode – режим записи/чтения
format – формат файла
Слайд 21

Значения констант OpenAsTextStream iomode принимает следующие значения: ForReading = 1 –

Значения констант OpenAsTextStream

iomode принимает следующие значения:
ForReading = 1 – открывает

файл для чтения
ForWriting = 2 – открывает файл для записи. Если файл существовал, то его содержимое предварительно стирается
ForAppending = 8 – открывает файл для добавления
format принимает следующие значения:
TristateUseDefault = –2 для открытия файла используются системные установки
TristateTrue = -1 – открывает файл в кодировке Unicode.
TristateFalse = 0 – открывает файл в кодировке ASCII
Слайд 22

Пример

Пример

Слайд 23

FSO. Список папок

FSO. Список папок

Слайд 24

Функции по работе с файлами

Функции по работе с файлами

Слайд 25

Функции по работе с файлами (продолжение) Константы атрибутов файла

Функции по работе с файлами (продолжение)

Константы атрибутов файла

Слайд 26

Функции по работе с файлами (продолжение)

Функции по работе с файлами (продолжение)

Слайд 27

Функции по работе с файлами (продолжение)

Функции по работе с файлами (продолжение)

Слайд 28

Примеры. Функция DIR

Примеры. Функция DIR

Слайд 29

Ввод данных в файл последовательного доступа. Оператор Write Записывает неформатированные данные

Ввод данных в файл последовательного доступа. Оператор Write

Записывает неформатированные данные в файл

последовательного доступа. В отличие от инструкции Print, инструкция Write вставляет запятые между элементами и заключает строки в кавычки по мере записи их в файл.
Синтаксис:
Write #НомерФайла, [СписокВывода]
НомерФайла – номер файла
СписокВывода – выражение или список выражений, записываемых в файл.
Данные, записанные с помощью инструкции Write, обычно считываются из файла с помощью инструкции Input
Слайд 30

Ввод данных в файл последовательного доступа. Оператор Print Записывает форматированные данные

Ввод данных в файл последовательного доступа. Оператор Print

Записывает форматированные данные в файл

последовательного доступа. Синтаксис:
Print #НомерФайла, [СписокВывода]
номерФайла – номер файла
списокВывода – выражение (или список выражений), записываемое в файл.
В аргументе СписокВывода разделителем списка выводимых выражений является ";" (данные выводятся подряд) или "," (данные выводятся по зонам). Кроме того, в аргументе СписокВывода допускается использование функций Spc и Tab:
Spc(n) – используется для вставки n пробелов в файл
Tab(n) – устанавливает курсор в столбец с номером n
Слайд 31

Пример использования оператора Print

Пример использования оператора Print

Слайд 32

Пример применения оператора Write

Пример применения оператора Write

Слайд 33

Ввод данных из файла последовательного доступа. Оператор Input

Ввод данных из файла последовательного доступа. Оператор Input

Слайд 34

Ввод данных из файла последовательного доступа

Ввод данных из файла последовательного доступа

Слайд 35

Пример использования оператора Input Dim MyChar Open "FILE.tst" For Input As

Пример использования оператора Input

Dim MyChar
Open "FILE.tst" For Input As #1
‘Цикл

до конца файла
Do While Not EOF(1)
‘Считываем 1 символ
MyChar = Input(1, #1)
‘Вывод в окно Immediate
Debug.Print MyChar
Loop
Close #1
Слайд 36

Пример

Пример

Слайд 37

Пример. Вывод массива в файл

Пример. Вывод массива в файл

Слайд 38

Пример. Ввод массива из файла

Пример. Ввод массива из файла

Слайд 39

Работа с файлом произвольного доступа

Работа с файлом произвольного доступа

Слайд 40

Работа с файлом произвольного доступа

Работа с файлом произвольного доступа

Слайд 41

Пример записи Type Record ' Пользовательский тип. ID As Integer Name

Пример записи

Type Record ' Пользовательский тип.
ID As Integer

Name As String * 20
End Type
Dim MyRecord As Record, RecordNumber
‘Открываем для прямой записи
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
For RecordNumber = 1 To 5 ' 5 оборотов цикла
MyRecord.ID = RecordNumber ' Заполняем поля MyRecord.Name = "My Name" & RecordNumber
‘Записываем записи в файл
Put #1, RecordNumber, MyRecord
Next RecordNumber
Close #1
Слайд 42

Пример чтение из файла ‘Открываем тестовый файл Open "TESTFILE" For Random

Пример чтение из файла

‘Открываем тестовый файл
Open "TESTFILE" For Random As #1

Len = Len(MyRecord)
Position = 3 ' номер записи.
' читаем третью запись
Get #1, Position, MyRecord
Close #1
Слайд 43

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

Выбор файла пользователем

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

это можно сделать несколькими путями.
Например через GetOpenFilename объекта Application.
Более общим приёмом является использование метода FileDialog.
Использование InputBox возможно, но не рекомендуется в силу большой вероятности ошибок и неудобства для пользователя.
Слайд 44

Пример кода GetOpenFileName

Пример кода GetOpenFileName

Слайд 45

Диалоговое окно

Диалоговое окно

Слайд 46

FileDialog

FileDialog

Слайд 47

Выбор папки Когда требуется выбрать папку, то можно использовать метод BrowseForFolder объекта Application

Выбор папки

Когда требуется выбрать папку, то можно использовать метод BrowseForFolder объекта

Application
Слайд 48

Выбор папки при помощи FileDialog

Выбор папки при помощи FileDialog

Слайд 49

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

Процедуры обработки ошибок

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

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

Функция перехвата ошибок On Error On Error производит перехват ошибки. Устанавливает,

Функция перехвата ошибок On Error

On Error производит перехват ошибки. Устанавливает, что

программа должна делать в случае появления ошибки.
Допустимы следующие синтаксисы.
Синтаксис 1: On Error GoTo строка
Активизирует подпрограмму обработки ошибок, начало которой определяется обязательным аргументом строка, значением которого может быть либо метка строки, либо номер строки.
Синтаксис 2: On Error Resume Next
Указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, где возникла ошибка.
Синтаксис 3: On Error GoTo 0
Отключает любой активизированный обработчик ошибок в текущей процедуре.
Слайд 51

Инструкция Resume Обеспечивает процедуре возможность продолжить работу после обработки ошибки. Допустимы

Инструкция Resume

Обеспечивает процедуре возможность продолжить работу после обработки ошибки. Допустимы следующие

синтаксисы.
Синтаксис 1: Resume
После обработки ошибки управление передается той инструкции, в которой произошла ошибка.
Синтаксис 2: Resume строка
После обработки ошибки управление передается инструкции, определенной аргументом строка. Значением этого аргумента может быть любая метка строки или номер строки.
Синтаксис 3: Resume Next
После обработки ошибки управление передается инструкции, следующей за инструкцией, в которой произошла ошибка.
Слайд 52

Инструкция Exit Инструкция Exit останавливает выполнение процедуры. Допустимые синтаксисы: Exit Sub

Инструкция Exit

Инструкция Exit останавливает выполнение процедуры.
Допустимые синтаксисы:
Exit Sub
Exit Function
Exit Property

Свойства

объекта Err
Слайд 53

Пример перехвата ошибок

Пример перехвата ошибок

Слайд 54

Коды ошибок

Коды ошибок

Слайд 55

Коды ошибок

Коды ошибок

Слайд 56

Коды ошибок

Коды ошибок

Слайд 57

Коды ошибок

Коды ошибок

Слайд 58

Коды ошибок

Коды ошибок