Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по VBA.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
592.38 Кб
Скачать

If TypeOf MyControl Is CommandButton Then

Debug.Print "Передан " & TypeName(MyControl)

ElseIf TypeOf MyControl Is CheckBox Then

Debug.Print "Передан " & TypeName(MyControl)

ElseIf TypeOf MyControl Is TextBox Then

Debug.Print "Передан " & TypeName(MyControl)

End If

End Sub

Шаг 28 - Инструкция Input #

Читает данные из открытого последовательного файла и присваивает их переменным.

Input #номерФайла, списокПеременных

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

Замечания Данные, считываемые с помощью инструкции Input #, обычно записываются в файл с помощью инструкции Write #. Эта инструкция применима только к файлам, открытым в режиме Input или Binary. После считывания стандартные строки и числовые данные присваиваются переменным без изменения. В следующей таблице показано, как обрабатываются остальные данные:

Запятая-разделитель

или пустая строка Empty

#NULL# Null

#TRUE# или #FALSE# True или False

#yyyy-mm-dd hh:mm:ss# Дата и/или время, являющиеся результатом выражения.

#ERROR кодОшибки# кодОшибки (переменная типа Variant, помеченная как ошибка).

Прямые кавычки (" ") внутри считываемых данных игнорируются. Элементы данных в файле должны располагаться в том же порядке, что и переменные в спискеПеременных, и иметь соответствующие переменным типы данных. Если переменная является числовой, а элемент данных нечисловым, переменной присваивается нулевое значение. При достижении конца файла во время считывания элемента данных ввод прекращается и возникает ошибка. Чтобы иметь возможность корректно считывать данные из файла в переменные с помощью инструкции Input #, следует всегда использовать инструкцию Write # (а не Print #) для записи данных в файлы. Использование инструкции Write # гарантирует правильность размещения разделителей между отдельными элементами данных.

Пример В данном примере инструкция Input # используется для чтения данных из файла в две переменные. Предположим, что текстовый файл TESTFILE существует и содержит несколько строк текста, записанных с помощью инструкции Write #, т.е. каждая строка содержит заключенную в кавычки строку и отделенное от нее запятой число, например ("Привет", 234).

Dim MyString, MyNumber

Open "TESTFILE" For Input As #1 ' Открывает файл для чтения.

Do While Not EOF(1) ' Цикл до конца файла.

Input #1, MyString, MyNumber

' Читает данные в две переменные.

Debug.Print MyString, MyNumber

' Выводит данные в окно отладки.

Loop

Close #1 ' Закрывает файл.

Шаг 29 - Инструкция Kill

Удаляет файлы с диска.

Kill путь

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

Замечания Инструкция Kill поддерживает использование подстановочных знаков для нескольких символов (*) и для одиночного символа (?) для указания нескольких файлов. При попытке удалить открытый файл с помощью инструкции Kill возникает ошибка. Для удаления каталогов следует использовать инструкцию RmDir.

Пример В данном примере инструкция Kill используется для удаления файла с диска. Поскольку Macintosh не поддерживает подстановочные знаки, для указания типа файлов вместо их имен можно использовать функцию MacID.

' Предположим что файл TESTFILE существует и содержит данные.

Kill "TestFile" ' Удаляет файл.

' В Microsoft Windows:

' Удаляет все файлы с расширением .TXT из текущего каталога.

Kill "*.TXT"

' На Macintosh:

' Функция MacID используется для удаления всех файлов типа "PICT"

' из текущей папки.

Kill MacID("PICT")

Шаг 30 - Инструкция Let

Присваивает значение выражения переменной или свойству.

[Let] имяПеременной = выражение

Параметры Let : Необязательный. Явное использование ключевого слова Let зависит от вкуса пользователя, обычно это слово опускают. ИмяПеременной : Обязательный. Имя переменной или свойства, удовлетворяющее стандартным правилам именования переменных. Выражение : Обязательный. Значение, присваиваемое переменной или свойству.

Замечания Значение выражения может быть присвоено переменной или свойству, только если оно имеет совместимый с этой переменной тип данных. Невозможно присвоить строковое выражение числовой переменной или числовое выражение строковой переменной. Такая попытка приведет к ошибке во время компиляции. Переменным типа Variant могут присваиваться как строковые, так и числовые выражения. Однако обратное не всегда верно. Любое значение типа Variant, за исключением значения Null, допускает присвоение строковой переменной, но только значение типа Variant, которое может рассматриваться как число, может быть присвоено числовой переменной. Пользуйтесь функцией IsNumeric для определения возможности преобразования значения Variant в числовое значение. Присвоение выражения с одним из числовых типов переменной с другим числовым типом данных преобразует значение выражения в тип данных результирующей переменной. Инструкция Let может быть использована для присвоения одной переменной-записи другой, только если обе переменные имеют одинаковый определяемый пользователем тип. Для присвоения переменных-записей различных определяемых пользователем типов используется инструкция LSet. Для присвоения переменным ссылок на объекты применяется инструкция Set.

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

Dim MyStr, MyInt

' Следующие присвоения используют инструкцию Let.

Let MyStr = "Привет"

Let MyInt = 5

Ниже приведены эквивалентные присвоения, не использующие инструкцию Let.

Dim MyStr, MyInt

MyStr = "Привет"

MyInt = 5

Шаг 31 - Инструкция Line Input #

Читает строку из открытого последовательного файла и присваивает ее переменной типа String.

Line Input #номерФайла, имяПеременной

Параметры номерФайла : Обязательный. Любой допустимый номер файла. имяПеременной : Обязательный. Допустимое имя переменной типа Variant или String.

Замечания Данные, считываемые с помощью инструкции Line Input #, обычно записываются в файл с помощью инструкции Print #. Инструкция Line Input # последовательно считывает из файла по одному символу до тех пор, пока не встретит символ возврата каретки (Chr(13)) или комбинацию символов возврата каретки и перевода строки (Chr(13) + Chr(10)). Когда считанная строка присваивается переменной, символы возврата каретки и конца строки отбрасываются.

Пример

В данном примере инструкция Line Input # используется для чтения строки из последовательного файла и присвоения ее переменной. Предположим, что текстовый файл TESTFILE существует и содержит несколько строк текста.

Dim TextLine

Open "TESTFILE" For Input As #1 ' Открывает файл.

Do While Not EOF(1) ' Цикл до конца файла.

Line Input #1, TextLine ' Читает строку в переменную.

Debug.Print TextLine ' Выводит в окно "Отладка".

Loop

Close #1 ' Закрывает файл.

Шаг 32 - Инструкция Load

Загружает объект, но не отображает его на экране.

Load объект

Параметры объект : Прототип объект представляет собой объектное выражение, значением которого является один из объектов, перечисленных в списке "Применение".

Замечания Когда объект загружается, он помещается в память, но не становится видимым. Чтобы сделать объект видимым, используется метод Show. Пока объект не станет видимым, пользователь не может взаимодействовать с ним, однако с объектом можно работать программным образом в его процедуре обработки события Initialize (Инициализация).

Пример В данном примере в момент, когда для формы UserForm1 происходит событие "Инициализация" (Initialize), загружается форма UserForm2. При последующем выделении с помощью мыши UserForm2 открывается UserForm1.

' Процедура события "Инициализация" (Initialize)

' для формы UserForm1.

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Событие "Нажатие кнопки" (Click) для формы UserForm2.

Private Sub UserForm_Click()

UserForm2.Hide

End Sub

' Событие "Нажатие кнопки" (Click) для формы UserForm1

Private Sub UserForm_Click()

UserForm2.Show

End Sub

Шаг 33 - Инструкции Lock и Unlock

Управляют доступом других процессов ко всему файлу, открытому с помощью инструкции Open, или к его части.

Lock [#]номерФайла[, диапазонЗаписей]

. . .

Unlock [#]номерФайла[, диапазонЗаписей]

Параметры номерФайла : Обязательный. Любой допустимый номер файла. ДиапазонЗаписей : Необязательный. Диапазон записей, которые следует заблокировать или разблокировать.

  • номерЗаписи - Номер записи (режим Random) или номер байта (режим Binary), с которого следует начать установку или снятие блокировки.

  • начало - Номер первой записи (или байта), которую следует заблокировать или разблокировать.

  • конец - Номер последней записи (или байта), которую следует заблокировать или разблокировать.

Замечания Инструкции Lock и Unlock используются в средах, в которых нескольким процессам может понадобиться доступ к одному и тому же файлу. Инструкции Lock и Unlock всегда используются парами. Аргументы инструкций Lock и Unlock, образующих пару, должны полностью совпадать. Первой записи (или байту) файла соответствует номер 1, второй 2 и т.п. Если указана только одна запись, то блокируется или разблокируется только одна эта запись. Если диапазон записей указан, но опущен аргумент начало, блокируются или разблокируются все записи от первой записи до конца диапазона (конец). Вызов инструкции Lock без аргумента номерЗаписи блокирует весь файл. Вызов инструкции Unlock без аргумента номерЗаписи приводит к снятию блокировки со всего файла. Если файл открыт для последовательного ввода или вывода, инструкции Lock и Unlock блокируют или разблокируют весь файл, независимо от наличия остальных аргументов. Перед закрытием файла или завершением работы с программой не забудьте удалить все блокировки с помощью инструкции Unlock. Несоблюдение этого правила может привести к непредсказуемым последствиям.

Пример В данном примере с помощью инструкций Lock и Unlock запрещается доступ других процессов к записи на время ее изменения. Предположим, что файл TESTFILE содержит пять записей определенного пользователем типа Record.

Type Record ' Тип, определенный пользователем.