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

Леонтьев Б.К. Я изучаю Microsoft Office Visio 2003 (PDF)

.pdf
Скачиваний:
681
Добавлен:
02.05.2014
Размер:
919.27 Кб
Скачать

Использование редактора Visual Basic

301

 

 

 

z = 0

' пусть функция max возвращает большее из двух чисел if (z = max(x, y)) > 0 then

Msgbox CStr(z) Else

Msgbox "How Come?" End if

Вы ожидаете, что высветится 20, как должно бы было произойти в С? Однако, Visual Basic 6.3 сравнит z с RHS (right hand side, правой сто роной), даже перед присвоением, независимо от скобок. Будьте внима тельны.

Использовать BACKQUOTES вместо апострофов

Часто при использовании Transact#SQL надо перехватывать ком ментарии пользователя из текстбокса и пересылать их в базу данных. Од нако, если юзер нажимает апостроф в текстбоксе, происходит ошибка времени выполнения, поскольку SQL Server использует апостроф как признак конца строки. Для того, чтобы обойти эту проблему, перехвати те ввод юзера в событии KeyPress и замените апостроф на вот такую ка вычку «'»(ASCII(145)):

Private Sub Text1_Keypress_ (KeyAscii as Integer)

If KeyAscii = 39 Then KeyAscii = 145

End If

End Sub

Также можно заменить все одинарные кавычки на «'» перед от сылкой в SQL Server.

Распространение новых версий программы по сети

Довольно трудно своевременно уследить за распространением каждой новой версии программы на всех машинах, поэтому необходимо использовать автоинкрементирующуюся нумерацию версий для провер ки, требуется ли апгрейд программы на конкретной машине. При ком пиляции программы установите автоинкремент версий в On. Сохраните ваши setup/upgrade файлы на сетевом диске (настоятельно рекомендуем использовать UNC пути (\\имя_машины\имя_диска) нежели просто имена дисков), и положите INI файл программы, в котором указан но мер новейшей версии. Затем вставьте следующий код в программу, собы тие Form_Load:

302 Использование редактора Visual Basic

Open IniFile$ For Input As #1

Line Input #1, sUpgradeVersion$ Close #1

If sUpgradeVersion > (Format(App.Major, "00") & "." & _ Format(App.Minor, "00") & "." & _

Format(App.Revision, "0000")) Then ' запуск апгрейда с сетевого диска End

End If

В случае, если версия в INI файле выше, чем версия, записанная в

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

Закрыть окно программы, как это делает Windows XP

Разместите этот код в declaration section модуля:

Public Sub Win95Shrivel(xForm As Form) ' минимизирует окно

xForm.WindowState = 1 End Sub

Вызывайте ее из процедуры Unload формы Private Sub Form_Unload(Cancel As _ Integer)

Win95Shrivel Me End Sub

Каждый раз при unloade формы она сначала быстро сворачивает ся к таскбару, а затем исчезает.

Excel VBA: Приёмы программирования

Как определить последнюю запись в таблице Excel?

Необходимо найти последнюю запись в электронной таблице. Это можно было бы организовать, к примеру, функцией Application.Speci# alCells(xlLastCell).

Как из макроса Excel программно создать таблицу Access?

Вот фрагмент кода, который создаёт таблицу BalanceShifr базе данных MS Access:

Использование редактора Visual Basic

303

 

 

 

<COLOR="#990000"Нint: Не забудьте выставить в Excel ссылки на объекты DAO!

<COLOR="#990000" [VBA] Tools/References/Available References/ [x] MicroSoft DAO ?.? Library

'Function CreateTable

'Create temporary table "BalanceShifr" into temporary database Public Function CreateTable(ByVal dbTemp As Database) As Boolean Dim tdfTemр As TableDef

Dim idx As Index Dim fld As Field

On Error GoTo errhandle CreateTable = True

'CREATE TABLE "BalanceShifr"

Set tdfTemp = dbTemp.CreateTableDef("BalanceShifr") Set fld = tdfTemp.CreateField("ConditionId", dbLong) fld.Required = True

tdfTemp.Fields.Append fld

Set fld = tdfTemp.CreateField("Account", dbText, 4) tdfTemp.Fields.Append fld

Set fld = tdfTemp.CreateField("SubAcc", dbText, 4) tdfTemp.Fields.Append fld

Set fld = tdfTemp.CreateField("Shifr", dbLong) tdfTemp.Fields.Append fld

Set fld = tdfTemp.CreateField("Date", dbDate) fld.Required = True

tdfTemp.Fields.Append fld

Set fld = tdfTemp.CreateField("SaldoDeb", dbCurrency) tdfTemp.Fields.Append fld

Set fld = tdfTemp.CreateField("SaldoKr", dbCurrency) tdfTemp.Fields.Append fld

dbTemp.TableDefs.Append tdfTemp ' CREATE INDEX "BalanceShifr"

Set tdfTemp = dbTemp.TableDefs("BalanceShifr") Set idx = tdfTemp.CreateIndex("ForeignKey") Set fld = idx.CreateField("ConditionId") idx.Fields.Append fld

tdfTemp.Indexes.Append idx Exit Function

errHandle:

MsgBox "Table creating error!", vbExclamation, "Error" CreateTable = False

End Function

304

Использование редактора Visual Basic

 

 

 

Как удалить рабочие листы листов в зависимости от даты?

Вот код функции на Excel VBA, который решает данную проблему:

'Function DelSheetByDate

'Удаляет рабочий лист sSheetName в активной рабочей книге,

'если дата dDelDate уже наступила

'В случае успеха возвращает True, иначе — False

Public Function DelSheetByDate(sSheetName As String, _ dDelDate As Date) As Boolean

On Error GoTo errHandle DelSheetByDate = False ' Проверка даты

If dDelDate <= Date Then

' Не выводить подтверждение на удаление Application.DisplayAlerts = False ActiveWorkbook.Worksheets(sSheetName).Delete DelSheetByDate = True Application.DisplayAlerts = True

End If

Exit Function errHandle:

MsgBox Err.Description, vbCritical, "Ошибка ?" & Err.Number End Function

Как подавить доступ по «горячим» клавишам, имеется ввиду предопределенные в Excel клавиши типа Ctrl O и т.д.?

Вот небольшой исходник на Excel VB, который решает такую про

блему.

Public Sub Auto_Open()

'Overrride standard accelerators With Application

.OnKey "^o", "Dummy"

.OnKey "^s", "NewAction"

.OnKey "^р", "" ' Kill hotkey ! End With

End Sub

Public Sub Dummy()

MsgBox "This hotkey redefined!" End Sub

'

Public Sub NewAction()

SendKeys "^n" ' Press <CTRL>+<s> for create new file

Использование редактора Visual Basic

305

 

 

 

' instead of <CTRL>+<n> ! End Sub

Как сделать к «самонарисованным» кнопочкам на Toolbar'е подсказки?

Сделать можно вот как:

' Cоздаем тулбар

Рublic Sub InitToolBar() Dim cmdbarSM As CommandBar

Dim ctlNewBtn As CommandBarButton

Set cmdbarSM = CommandBars.Add(Name:="MyToolBar", Position:=msoBarFloating, _

temporary:=True) With cmdbarSM

' 1) Добавляем кнопку

Set ctlNewBtn = .Controls.Add(Type:=msoControlButton) With ctlNewBtn

. FaceId = 26

.OnAction = "OnButton1_Click"

.TooltipText = "My tooltip message!" End With

' 2) Добавляем ещё кнопку

Set ctlNewBtn = .Controls.Add(Type:=msoControlButton) With ctlNewBtn

.FaceId = 44

.OnAction = "OnButton2_Click"

.TooltipText = "Another tooltip message!" End With

.Visible = True End With

End Sub

Как в макросе узнать и использовать текущее положение курсора (не мышиного, естественно)?

Очень просто!

ActiveCell.Row и ActiveCell.Column покажут координаты активной ячейки.

Как узнать есть ли хоть один Notes (комментарий) в рабочем листе, кроме как перебором по всем ячейкам?

В Excel эта проблема может быть решена вот как:

'Function IsCommentsPresent

'Возвращает TRUE, если на активном рабочем листе имеется хотя бы

'одна ячейка с комментарием, иначе возвращает FALSE

306

Использование редактора Visual Basic

 

 

 

'

Public Function IsCommentsPresent() As Boolean IsCommentsPresent = ( ActiveSheet.Comments.Count <> 0 ) End Function

Как сделать свой собственный Toolbar с tooltip'ами на кнопках в Excel?

Вот фрагмент кода для Excel, который создаёт toolbar с одной кнопкой с пользовательским tooltiр'ом. Нажатие кнопки приводит к вы полнению макроса NothingToDo().

'This example creates a new toolbar, adds the Camera button

'(button index number 228) to it, and then displays the new

'toolbar.

'

Public Sub CreateMyToolBar() Dim myNewToolbar As Toolbar On Error GoTo errHandle:

Set myNewToolbar = Toolbars.Add(Name:="My New Toolbar") With myNewToolbar

.ToolbarButtons.Add Button:=228, StatusBar:="Statusbar help string"

.Visible = True

With .ToolbarButtons(1)

.OnAction = "NothingToDo"

.Name = "My custom tooltiр text!" End With

End With

Exit Sub errНandle:

MsgBox "Error number " & Err & ": " & Error(Err) End Sub

'

' Toolbar button on action code

'

Рublic Sub NothingToDo()

MsgBox "Nothing to do!", vbInformation, "Macro running" End Sub

Как запустить Excel, чтобы оказаться на ячейке содержимое которой известно заранее?

Вот как можно решить эту задачу:

'Sub GotoFixedCell:

'Делает активной ячейку, содержащую значение vVariant на

'рабочем листе sSheetName в активной рабочей книге.

Использование редактора Visual Basic

307

 

 

 

'

' Note: Содержимое ячеек интерпретируется как 'значение'!

'

Public Sub GotoFixedCell(vValue As Variant, sSheetName As String) Dim c As Range, cStart As Range, cForFind As Range

Dim i As Integer

On Error GoTo errhandle:

Set cForFind = Worksheets(sSheetName).Cells ' Диапазон поиска With cForFind

Set c = .Find(What:=vValue, After:=ActiveCell, LookIn:=xlValues,

_

LookAt:= xlРart, SearchOrder:=xlByRows,_ SearchDirection:=xlNext, MatchCase:=False) Set cStart = c

While Not c Is Nothing Set c = .FindNext(c)

If c.Address = cStart.Address Then c.Select

Exit Sub

End If Wend

End With

Exit Sub errНandle:

MsgBox Err.Descriрtion, vbExclamation, "Error #" & Err.Number End Sub

Хочy через Excel VBA задать имя листу, который будет вставлен. Но у команды Sheets.Add нет такого параметра! Как бороться?

Очень просто...

'

'Sub CreateSheet

'Вставляет активную рабочую книгу в рабочий лист с именем

'sSName.

'Note: В случае, если параметр bVisible имеет значение False,

'этот лист становится скрытым.

'

Рublic Sub CreateSheet(sSName As String, bVisible As Boolean) Dim wsNewSheet As WorkSheet

On Error GoTo errНandle

Set wsNewSheet = ActiveWorkBook.Worksheets.Add With wsNewSheet

.Name = sSName

.Visible = bVisible

308

Использование редактора Visual Basic

 

 

 

End With

Exit Sub errНandle:

MsgBox Err.Descriрtion, vbExclamation, "Error #" & Err.Number End Sub

Как проверить существует ли лист?

Можно поступить вот как:

'Function IsWorkSheetExist

'Проверяет, имеется ли в активной рабочей книге лист

'с именем sSName.

'В случае успеха возвращает True, иначе — False

'

Рublic Function IsWorkSheetExist(sSName As String) As Boolean Dim c As Object

On Error GoTo errНandle: Set c = sheets(sName)

' Альтернативный вариант :

Worksheets(sSName).Cells(1, 1) = Worksheets(sSName).Cells(1, 1) IsWorkSheetExist = True

Exit Function errНandle:

IsWorkSheetExist = False End Function

Как обратиться к ячейке по ее имени?

Как обратиться к ячейки по ее имени? То есть есть Лист1 и в нем ячейки с именем Дебет и Кредит. Необходимо подсчитать Дебет#Кредит средствами Excel VBA. При использовании Range(Дебет) Range(Кредит) выдается ошибка, что не описаны переменные.

Нужно разыменовать ячейку из кода Excel VBA. Вот фрагмент ко да, который решает такую задачу:

'Function ValueOfNamedCell

'Возвращает значение ячейки с именем sCellName.

'в активной рабочей книге.

'Note: В случае, если ячейка с именем sCellName не существует —

'функцией возвращается

'значение Emрty.

'

Рublic Function ValueOfNamedCell(sCellName As String) As Variant On Error GoTo errНandle

ValueOfNamedCell = ActiveWorkbook.Names(sCellName).RefersToRange.Value Exit Function

Использование редактора Visual Basic

309

 

 

 

errНandle: ValueOfNamedCell = Emрty End Function

Можно ли из программы на Visual Basic создать рабочую книгу Excel?

Да, можно. Пример того, как из Visual Basic через OLE запустить Excel, и создать рабочую книгу:

'CreateXlBook

'Вызывает MS Excel, создает рабочую книгу с именем sWbName с

'одним единственным рабочим листом.

'Рабочая книга будет сохранена в каталоге

'sDirName. В случае успеха возвращает True,

'в противном случае — False.

'

Public Function CreateXlBook(sWbName As String, sDirName) As Boolean

'MS Excel hidden instance Dim objXLApp As Object

Dim objWbNewBook As Object CreateXlBook = False

Set objXLApp = CreateObject("Excel.Application") If objXLApp Is Nothing Then Exit Function

'В новой рабочей книге создавать только один рабочий лист objXLApp.SheetsInNewWorkbook = 1

Set objWbNewBook = objXLApp.Workbooks.Add

If objWbNewBook Is Nothing Then Exit Function

'Сохраняем книгу

If vbNullString = Dir(sDirName, vbDirectory) Then Exit Function objWbNewBook.SaveAs (sDirName + "\" + sWbName + ".xls") CreateXlBook = True

' Освобождение памяти

Set objWbNewBook = Nothing objXLApp.Quit

Set objXLApp = Nothing CreateXlBook = True End Function

Типы переменных

Всегда используйте Integer или Long тип переменных, где это воз можно. Процессор обрабатывает эти переменные за один такт.

Используйте Singl вместо Double, они короче и быстрее.

Не используйте Variant, если это возможно.

310

Использование редактора Visual Basic

 

 

 

Обязательно добавьте в General каждого модуля Option Explicit или, как альтернативу — DefLong A#Z.

Локальные переменные типа Static в 2–3 раза медленнее, чем обычные локальные переменные. Также они медленнее, чем перемен ные уровня формы. В то же время переменные формы несколько быстрее переменных модуля.

Явные и неявные преобразования

Остерегайтесь использовать функции Int и Val — они всегда воз вращают вещественное значение с плавающей точкой. В случае, если вы используете Long или Integer, применяйте CInt или CLng.

result% = Val(Text1.Text) result% = Int(Text1.Text) result% = CInt(Text1.Text) result% = Text1.Text

Каждое утверждение в этом коде немного быстрее, чем предыду щее; последнее — приблизительно на 30 процентов быстрее чем первое.

Используйте «\» вместо «/» при делении целых. Избегайте лишних неявных преобразований, так как оператор «/» возвращает значение

Single.

Имейте в виду, что оператор «/» возвращает значение Double, если по крайней мере один из элементов имеет тип Double.

Бейсик хранит константы в наиболее простой форме: скажем, кон станта, несущая единицу, хранится как целое, если вы предполагаете ис пользовать ее для действий с вещественными числами, объявите ее явно:

Const ONE As Double = 1

Математика

Самые быстрые функции те, результаты работы которых вы може те оценивать заранее. Например, сохранение факториалов всех чисел в диапазоне от одного до 100 в массив один раз в начале программы — на много быстрее, чем предположительные тысячи вызовов функции в те чение жизни приложения.

Используйте оператор And вместо Mod, когда делитель — число в формате 2 ^ N. Например, вы можете использовать два метода извлечь самый младший байт в Целом числе:

lowByte% = value% Mod 256 lowByte% = value% And 255

Второй немного быстрее.

Используйте Boolean в операторах сравнения

Использование редактора Visual Basic

311

 

 

 

Например:

If x <> 0 Or y <> 0 Then ...

Работает так же как это:

If x Or y Then ...

А это:

If x = 0 And y = 0 Then ...

Так же как это :

If (x Or y) = 0 Then ...

Даже оператор XOR может сэкономить немного времени:

If (x = 0 And y = 0) Or (x <> 0 And y <> 0) Then ...

А побыстрее так:

If (x = 0) Xor (y <> 0) Then ..

Иногда вы можете заменить весь If...Else блок более простой опе рацией Boolean. Например, вы можете заменить этот код:

If x > 0 Then y = 1 Else y = 0

на другой, хотя и весьма загадочный

y = (x > 0)

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

Ускорение массивов

Чтение и запись элемента массива всегда медленнее, чем доступ к простой переменной. Следовательно, если вы должны использовать тот же самый элемент массива в цикле неоднократно, вы должны назначить временную переменную, содержащую этот элемент, и использовать именно ее. В циклах повышение производительности может достигать 80 процентов.

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

При частом поиске в массиве, содержание которого не меняется, часто имеет смысл подумать о сортировке. Сортировка обычно — мед ленное занятие, но сортировка с использованием Hash tables может уско рить процесс сортировки во много раз.

В случае, если значения Integer элементов вашего массива не более 255, то имеет смысл преобразовать его в массив типа Byte. Это не ускорит код, но ресурсоемкость уменьшит, что актуально для старых машин.

312

Использование редактора Visual Basic

 

 

 

Копируйте блоки данных между массивами того же самого типа, используя функцию API CopyMemory вместо For...Next loop:

Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, As Any, ByVal bytes As Long)

'copy a() into b() — b() is of same type and properly

'DIMensioned N is the number of items

'to copy CopyMemory b(0), a(0), n * Len(a(0))

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

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

Никогда не используйте For Each на Variant массивах. Обычный For loop с Integer или Long индексом как минимум в двое быстрее.

Вслучае, если вы абсолютно уверены, ваша программа Visual Basic

6.3никогда не выдает Subscript out of range error, можете компилировать нэйтив код с опцией Remove Array Bounds Check. Это может ускорить программу с работой в массивах на 50 процентов или больше.

Строковые операции

Конкатенация — это медленная операция, если вы хотите заме нить 1 2 символа в строке — используйте функцию Mid$:

Mid$(a$, 1, 1) = "A"

Hе используйте такой код: a$ = "A & Mid$(a$, 2)

Cтроковые переменные фиксированной длины часто медленнее, чем стандартные строковые переменные. Фактически, все строковые функции работают только со строками переменной длины. Следователь но, все строки фиксированной длины сначала должны быть преобразо ваны, прежде, чем обработаются. Это может замедлить ваш код раза в три или четыре.

Используйте функции со знаком $, они возвращают вам строко вые значения, тогда как без доллара — Variant, что приводит к лишним преобразованиям.

Использование ASCII кода чувствительно быстрее использования символа к примеру:

If Left$(a$, 1) = " " Then ... ' If Asc(a$) = 32 Then ...

Второе примерно на 40 процентов быстрее.

Использование редактора Visual Basic

313

 

 

 

Используйте встроенные строковые константы вместо Chr$ (). Hапример, используйте vbTab вместо Chr$ (9), и vbCrLf вместо Chr$ (13)

и Chr$ (10).

Использование функции Len, чтобы проверить, содержит ли стро ка символы — приблизительно на 25 процентов быстрее, чем явное срав нение с пустой строкой:

If Len(a$) = 0 Then ...

Часто Visual Basic 6.3 программисты сравнивают строки, используя LCASE$ или UCASE$, чтобы преобразовать обе строки перед сравнени ем. Однако, быстрее прибегнуть к редко используемой функции StrComp:

If StrComp(a$, b$, vbTextCompare) = 0 Then ' strings are equal

End If

Точно так же, когда вы должны искать подстроку в режиме без учета регистра, используйте функцию InStr с четвертым необязательным параметром:

If Instr(1, a$, "vb", vbTextCompare) Then ...

Функция InStr позволяет вам быстро проверять содержится ли одиночный символ в списке символов.

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

If ID Like "[A Z]###" Then ...

Здесь IP должен содержать букву и три цифры.

Ускорение загрузки форм

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

Hе выполняйте много медленных процессов в событии Form Load, перенесите их в Form Activate, при этом, если форма не модальная, при дется отслеживать получение формой фокуса, чтобы избежать повтор ной инициализации.

Private Sub Form_Activate() Static initDone As Boolean

If Not initDone Then ' open your DB here initDone = True

End If

End Sub

Будет работать быстрее и уменьшится потребление ресурсов, если вы используете меньшее количество и более простые контролы. Hапри

314

Использование редактора Visual Basic

 

 

 

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

По той же самой причине, используйте лэйбл с рамкой вместо строки состояния или текстбокса только для чтения, Имиджбокс вместо Тулбокса, маленький scrollbar вместо спинбаттон, и т.д.

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

Unload Form1

Set Form1 = Nothing

Помните!

Abs (функция)

Возвращает абсолютное значение числа.

And (операция)

Логическое И.

AppActivate (оператор)

Активизирует окно приложения.

Array (функция)

Создает массив из параметров и возвращает его как переменную типа Variant

Asc (функция)

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

Atn (функция)

Возвращает арктангенс числа в радианах.

Веер (оператор)

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

Call (оператор)

Передает управление процедуре модуля (Sub), функции модуля (Function) или подпрограмме DLL.

CBool (функция)

Приводит выражение к типу Boolean.

CByte (функция)

Преобразует выражение к типу Byte.

ССur (функция)

Преобразование выражения к типу Currency.

Использование редактора Visual Basic

315

 

 

 

CDate (функция)

Преобразование выражения к типу Date.

CDbl (функция)

Преобразование к типу Double.

ChDir (оператор)

Изменяет текущий каталог на устройстве.

ChDrive (оператор)

Изменяет текущее устройство.

Choose (функция)

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

Chr (функция)

Возвращает символ, связанный с определенным числовым кодом.

CInt (функция)

Преобразование выражения к типу Integer.

CLng (функция)

Преобразование выражения к типу Long.

Close (оператор)

Закрывает файл, открытый оператором Open.

Command (функция)

Возвращает командную строку, используемую для запуска Visual Basic или приложения на Visual Basic.

Const

Оператор объявления констант.

Cos (функция)

Возвращает косинус числа.

Create Object (функция)

Создать OLE Automation объект.

CSng (функция)

Преобразование выражения к типу Single.

CStr (функция)

Преобразование выражения к типу String.

316

Использование редактора Visual Basic

 

 

 

CurDir (функция)

Возвращает текущий каталог логического устройства.

CVar (функция)

Преобразование выражения к типу Variant.

CVErr (функция)

Возвращает подтип ошибки, для определенного пользователем номера ошибки.

Date (оператор)

Устанавливает значение системной даты.

Date (функция)

Возвращает значение системной даты.

DateAdd (функция)

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

DateDiff (функция)

Возвращает число временных интервалов между двумя датами.

DatePart (функция)

Возвращает определенную часть заданной даты.

DateSerial (функция)

Возвращает дату для заданного года, месяца и дня.

DateValue (функция)

Возвращает дату.

Day (функция)

Возвращает число от 1 до 31, соответствующее текущему дню ме

сяца.

DDB (функция)

Возвращает значение амортизационных потерь за определенный период.

Declare (оператор)

На уровне модуля объявляет ссылки ко внешним подпрограммам в DLL.

Deftype (операторы)

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

Использование редактора Visual Basic

317

 

 

 

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

Dim (оператор)

Объявляет переменные и выделяет память под них.

Dir (функция)

Возвращает имя файла или каталог, подходящий для данного шаблона или атрибута файла, или метку тома устройства.

DoEvents (функция)

Прерывает выполнение приложения.

Do... Loop (оператор)

Повторяет блок команд до тех пор, пока условие верно или до тех пор, пока условие не станет верным.

End (оператор)

Заканчивает подпрограмму или блок команд.

Environ (функция)

Возвращает строку, связанную с переменной окружения операци онной системы

EOF (функция)

Возвращает значение, указывающее, достигнут ли конец файла.

Eqv (оператор)

Проверяет логическое равенство двух выражений.

Erase (оператор)

Повторно инициализирует элементы массивов фиксированного размера и перераспределяет память под динамические массивы.

Error (оператор)

Эмулирует возникновение ошибки.

Error (функция)

Возвращает текст сообщения данного номера ошибки.

Exit (операторы)

Осуществляет выход из циклов Do ... Loop, For ... Next, функции и процедур.

Ехр (функция)

Возвращает экспоненту числа.

318

Использование редактора Visual Basic

 

 

 

FileAttr (функция)

Возвращает режим открытия или номер (handle) файла.

FileCopy(onepamop)

Копирует файл.

FileDateTime (функция)

Возвращает дату и время создания или последней модификации файла.

FileLen (функция)

Возвращает длину файла в байтах.

Fix (функция)

Возвращает целую часть числа.

For Each...Next (оператор)

Повторяет одну и ту же последовательность команд для каждого элемента массива или коллекции.

For...Next (оператор)

Повторяет последовательность команд определенное число раз.

Format (функция)

Форматирует выражение в соответствии с заданным форматом.

FreeFile (функция)

Возвращает следующий не занятый номер файла для использова ния в операторе Open.

Function (оператор)

Объявляет имя, аргументы и код подпрограммы, возвращающей значение (функции).

FV (функция)

Возвращает значение ренты, основываясь на периодических взно сах и постоянной норме капиталовложений.

Get (оператор)

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

GetAttr (функция)

Возвращает атрибуты файла, каталога или метки тома.

GetObject (функция)

Возвращает OLE Automation объект для файла с данным расшире

нием.

Использование редактора Visual Basic

319

 

 

 

GoSub... Return (оператор)

Выполняет подпрограмму.

GoTo (оператор)

Передает управление определенной строке подпрограммы без возврата контроля.

Hex (функция)

Возвращает строку, представляющую шестнадцатеричное значе ние числа.

Hour (функция)

Возвращает целое число в диапазоне 0–23 включительно, пред ставляющее определенный час дня.

If...Then... Else (оператор)

Выполнение групп команд в зависимости от значения выражения.

Iff (функция)

Возвращает одно из двух значении в зависимости от значения вы ражения.

Imp (операция)

Импликация двух выражений.

Input (функция)

Возвращает символы из файла, открытого для последовательного доступа или как двоичный файл.

Input # (оператор)

Считывает данные из открытого файла в переменные.

InputBox (функция)

Показывает диалоговое окно ввода, ожидает ввода текста и воз вращает содержимое введенного текста, после закрытия окна.

InStr (функция)

Возвращает позицию первой найденной подстроки в строке.

Int (функция)

Возвращает целую часть числа.

Is (операция)

Сравнение двух ссылок на объекты.

320

Использование редактора Visual Basic

 

 

 

IsArray (функция)

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

IsDate (функция)

Возвращает булево значение, указывающее, может ли выражение быть преобразовано к типу Date.

IsEmpty (функция)

Возвращает булево значение, указывающее, инициализировано ли значение данной переменной.

IsError (функция)

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

IsMissing (функция)

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

IsNull (функция)

Возвращает булево значение, указывающее, не содержит ли выра жение недопустимое (Null) значение.

IsNumeric (функция)

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

IsObject (функция)

Возвращает булево значение, указывающее, является ли выраже ние объектом OLE Automation.

Kill (оператор)

Удаляет файл.

LBound (функция)

Возвращает значение нижней границы индекса массива.

LCase (функция)

Возвращает строку в нижнем регистре.

Left (функция)

Возвращает определенное число символов с начала строки.