Операторы.

S-W

 

По порядку:

SavePicture

SaveSetting

Seek

Select Case

SendKeys

Set

SetAttr

Static

Stop

Sub

Time

Type

Unload

Unlock

While...Wend

Width

With

Write

 

 

SavePicture picture, stringexpression - сохраняет изображение, находящееся в данный момент в свойствах Picture или Image объекта X в файл.

Пример:

' Поместите на форму PictureBox и загрузите туда любую картинку

Private Sub Form_Click()
AutoRedraw = True                ' Включаем перерисовку окна
Picture1.AutoRedraw = True
Form1.ScaleMode = vbPixels       ' Ставим вид масштаба в пиксели
Picture1.ScaleMode = vbPixels
Form1.PaintPicture Picture1, 0, 0, 100, 100, 0, 0, 100, 100, vbSrcCopy
Form1.Refresh
MsgBox "Нажмите OK для сохранения"
SavePicture Image, "C:\1.BMP"    ' Сохраняем картинку
End Sub

 

SaveSetting appname, section, key, setting - Записывает настройку в реестр. Напомню, что функция DeleteSetting удаляет настройку, а функция GetSetting загружает. Я почему-то не нашёл в документации путь, куда сохраняются настройки. Пришлось определять самому. Оказалось, что настройки записываются по адресу:
HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings
В этом ключе создаётся ещё один ключ с названием appname.

Пример:

' Сохраняем положение левой координаты формы в реестр
SaveSetting "MyApp", "Startup", "Left", Form1.Left

 

Seek [#]filenumber, position - Устанавливает позицию для чтения/записи в файле, открытым оператором Open.

Пример:

Type Record ' Определённый пользователем тип
ID As Integer
Name As String * 20
End Type

' Для файлов, открытых для произвольного доступа,
' Seek устанавливает следующую запись

Dim MyRecord As Record, MaxSize, RecordNumber ' Объявляем переменные
' Открываем файл для произвольного доступа
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
MaxSize = LOF(1) \ Len(MyRecord) ' Получаем количество записей в файле
' Цикл читает записи с конца до начала
For RecordNumber = MaxSize To 1 Step - 1
Seek #1, RecordNumber ' Устанавливаем позицию записи
Get #1, , MyRecord ' Читаем запись
Next RecordNumber
Close #1 ' Закрываем файл

' Для файлов, окрытых не для произвольного доступа,
' Seek устанавливает позицию с точностью до байта.

Dim MaxSize, NextChar, MyChar
Open "TESTFILE" For Input As #1 ' Открываем файл
MaxSize = LOF(1) ' Получаем размер файла в байтах
' Цикл читает по букве с конца файла до начала
For NextChar = MaxSize To 1 Step -1
Seek #1, NextChar ' Устанавливаем позицию
MyChar = Input(1, #1) ' Читаем символ
Next NextChar
Close #1 ' Закрываем файл

 

Select Case

 

SendKeys string[, wait] - посылает одно или более нажатий на клавишу в активное окно. Всё происходит точно так же, как будто всё было введено с клавиатуры.

Пример:

Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1) ' Запускаем калькулятор
AppActivate ReturnValue            ' Активизируем калькулятор
For I = 1 To 100                   ' Циклимся 100 раз
SendKeys I & "{+}", True           ' Посылаем нажатие на клавишу в калькулятор
Next I                             ' Добавляем к значению в калькуляторе переменную I
SendKeys "=", True                 ' Нажимаем на знак равенства
SendKeys "%{F4}", True             ' Посылаем Alt+F4 для закрытия калькулятора

 

Set objectvar = {[New] objectexpression | Nothing} - присваивает переменной ссылку на объект.

Пример:

Dim YourObject, MyObject, MyStr
Set MyObject = YourObject ' Присваиваем ссылку
' MyObject иYourObject ссылаются на один и тот же объект
YourObject.Text = "Hello World" ' Инициализируем свойство
MyStr = MyObject.Text ' Возвратит "Hello World".

' Удаляем ссылку на объект
Set MyObject = Nothing ' Освобождаем объект

 

SetAttr pathname, attributes - устанавливает атрибуты файла pathname.

Пример:

SetAttr "TESTFILE", vbHidden
' Теперь файл скрытый
SetAttr "TESTFILE", vbHidden + vbReadOnly
' Теперь он и скрытый и только для чтения

 

Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]]...

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

Пример:

' Определение функции
Function KeepTotal(Number)
' Только переменная Accumulate сохраняет своё значение между вызовами
Static Accumulate
Accumulate = Accumulate + Number
KeepTotal = Accumulate
End Function

' Определение статической функции
Static Function MyFunction(Arg1, Arg2, Arg3)
' Все локальные переменные сохраняют свои значения между вызовами
Accumulate = Arg1 + Arg2 + Arg3
Half = Accumulate / 2
MyFunction = Half
End Function

 

Stop - С помощью этого оператора можно поставить брикпоинт в программе. Если же программу скомпилировать с этим оператором и запустить, то при наступлении это оператора программа выдаст ошибку. В отличие от оператора End, оператор Stop не закрывает открытые файлы и не очищает переменные.

Пример:

Dim I
For I = 1 To 10 ' Запускаем цикл
Debug.Print I   ' Печатаем I в Debug
Stop            ' Останавливаемся на каждой итерации
Next I

 

[Private | Public | Friend] [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub

Этот оператор объявляет процедуру с именем name и параметрами arglist.

Пример:

' Объявляем процедуру
' Процедура имеет 2 аргумента

Sub SubComputeArea(Length, TheWidth)
Dim Area As Double ' Объявляем локальную переменную
If Length = 0 Or TheWidth = 0 Then
' Если любой аргумент равен нулю
Exit Sub ' Сразу выходим из процедуры
End If
Area = Length * TheWidth ' Вычисляем площадь прямоугольника
Debug.Print Area ' Печатаем её в окно Debug
End Sub

 

Time = time - Изменяет системное время на time.

Пример:

Dim MyTime
MyTime = #4:35:17 PM#  ' Присваиваем время переменной
Time = MyTime          ' Изменяем системное время

 

[Private | Public] Type varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .
End Type

Объявляет новый тип (тип, определённый пользователем), содержащий один или несколько элементов.

Пример:

Type EmployeeRecord ' Создаём новый тип
ID As Integer       ' Определяем типы значений, входящие в новый тип
Name As String * 20
Address As String * 30
Phone As Long
HireDate As Date
End Type

Sub CreateRecord()
Dim MyRecord As EmployeeRecord ' Объявляем переменную
' Присвоение значения переменной типа EmployeeRecord
' должно произойти в процедуре

MyRecord.ID = 12003 ' Присваиваем значение элементу переменной
End Sub

 

 

U

 

Unload object - Выгружает объект (форму или компонент). Эта функция является обратной функции Load.

Пример:

Private Sub Form_Click ()
Dim Answer, Msg As String ' Объявляем переменные
Unload Form1              ' Выгружаем форму
Msg = _
"Form1 только что была выгружена. Нажмите Да, чтобы загрузить её и "
Msg = Msg & "показать. Нажмите Нет чтобы загрузить её и "
Msg = Msg & "оставить невидимой."
Answer = MsgBox(Msg, vbYesNo) ' Выводим окно сообщения
If Answer = vbYes Then        ' Проверяем выбор юзера
Show                          ' если Да, то показываем форму
Else
Load Form1                    ' Если Нет, то только загружаем
Msg = "Теперь форма загружена. Нажмите ОК, чтобы показать её."
MsgBox Msg                    ' Выводим сообщение
Show                          ' Показываем форму
End If
End Sub

Lock [#]filenumber[, recordrange]
. . .
Unlock [#]filenumber[, recordrange]

Эти операторы управляют доступом к файлу для других процессов, чтобы те не могли что-либо сделать с компонентом этого файла. В приведённом ниже примере после оператора Lock доступ к записи закрывается, и другие процессы (программы) не смогут изменить эту запись. Запись отпирается оператором Unlock.

Пример:

Type Record ' Тип, определённый пользователем (находится в модуле)
ID As Integer
Name As String * 20
End Type

Dim MyRecord As Record, RecordNumber ' Объявляем переменные

' Открываем файл-пример для произвольного доступа
Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord)

RecordNumber = 4 ' Устанавливаем позицию записи
Lock #1, RecordNumber ' Запираем эту запись
Get #1, RecordNumber, MyRecord ' Читаем запись
MyRecord.ID = 234 ' Модифицируем её
MyRecord.Name = "John Smith"
Put #1, RecordNumber, MyRecord ' Записываем изменённую запись
Unlock #1, RecordNumber ' Отпираем запись

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

 

 

W

 

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

Пример:

Dim Counter
Counter = 0        ' Инициализируем переменные
While Counter < 20 ' Проверяем значение счётчика
Counter = Counter + 1 ' Увеличиваем счётчик
Wend ' Заканчиваем цикл, если Counter > 19
Debug.Print Counter ' Печатаем 20 в окно Debug

' Этот же пример, только с циклом Do While:

Dim Counter
Counter = 0 ' Инициализируем переменные
Do While Counter < 20 ' Проверяем значение счётчика
Counter = Counter + 1 ' Увеличиваем счётчик
Loop ' Заканчиваем цикл, если Counter > 19
Debug.Print Counter ' Печатаем 20 в окно Debug

 

Width #filenumber, width - Устанавливает длину строки при выводе в файл, открытый оператором Open.

Пример:

Dim I
Open "TESTFILE" For Output As #1 ' Открываем файл для записи
Width #1, 5 ' Устанавливаем длину вывода 5
For I = 0 To 9 ' Циклимся 10 раз
Print #1, Chr(48 + I); ' Выводим по 5 символов в строке
Next I
Close #1 ' Закрываем файл

 

With object
[statements]
End With

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

Пример:

With MyObject
.Height = 100
' Аналогично выражению MyObject.Height = 100.
.Caption = "Hello World"
' Аналогично выражению MyObject.Caption = "Hello World".
With .Font
.Color = Red ' Аналогично выражению MyObject.Font.Color = Red.
.Bold = True ' Аналогично выражению MyObject.Font.Bold = True.
End With
End With

 

Write #filenumber, [outputlist] - последовательно записывает данные в файл.

Пример:

Open "TESTFILE" For Output As #1 ' Открываем файл для записи
Write #1, "Hello World", 234 ' Записываем строку, разделённую запятой
Write #1, ' Записываем пустую линию

Dim MyBool, MyDate, MyNull, MyError
' Присваиваем Boolean, Date, Null и Error значения
MyBool = False
MyDate = #February 12, 1969#
MyNull = Null
MyError = CVErr(32767)
' Boolean запишется как #TRUE# или #FALSE#. Дата запишется
' как #1969-01-12#. Null запишется как #NULL#.
' Error капишется как #ERROR код_ошибки#.

Write #1, MyBool ; " это Boolean значение
Write #1, MyDate ; " это Дата"
Write #1, MyNull ; " это Null"
Write #1, MyError ; " а это Error"
Close #1 ' Закрываем файл

 

 
 
Вернутся на главную   Вернутся на предыдущую.
Rambler's Top100   

 

Сайт управляется системой uCoz