Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 02.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.08 Mб
Скачать

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

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

Рис. 30 Форма для поиска записи по условию

Модуль формы

Option Explicit

Const ПутькБазе = "c:\Мои документы\R.mdb"

Const ИмяТаблицы = "Таблица1"

'Объявляем переменную для ссылки на базу данных

Dim db As Database

'Объявляем переменную для ссылки на таблицу базы данных

Dim r As Recordset

Dim s As String

Sub ОбновитьПоля()

TextBox1.Value = r.Fields(0).Value

TextBox2.Value = r.Fields(1).Value

End Sub

Sub Поиск(ВидПоиска)

On Error GoTo st1

Select Case ВидПоиска

Case "FindPrevious"

r.FindPrevious Search1.Text

Case "FindFirst"

r.FindFirst Search1.Text

Case "FindNext"

r.FindNext Search1.Text

Case "FindLast"

r.FindLast Search1.Text

End Select

If r.NoMatch = True Then

MsgBox "Не найдена!"

Else

ОбновитьПоля

End If

Exit Sub

st1:

MsgBox "Ошибка команды для поиска"

End Sub

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then

s = Search1.Text

Search1.Text = "[" & r.Fields(0).Name & "] = [" & r.Fields(0).Name & "]"

Search1.Enabled = False

ComboBox1.Visible = False

Else

Search1.Text = s

Search1.Enabled = True

ComboBox1.Visible = True

End If

End Sub

Private Sub ComboBox1_Change()

If ComboBox1.ListIndex >= 0 And Search1.Enabled = True Then

Search1.Text = Search1.Text + " [" + ComboBox1.Text + "] ="

ComboBox1.Text = "(Выбор имени поля для команды)"

Search1.SetFocus

End If

End Sub

'Кнопка |<

Private Sub CommandButton1_Click()

Поиск "FindFirst"

End Sub

'Кнопка <

Private Sub CommandButton2_Click()

Поиск "FindPrevious"

End Sub

'Кнопка >

Private Sub CommandButton3_Click()

Поиск "FindNext"

End Sub

'Кнопка >|

Private Sub CommandButton4_Click()

Поиск "FindLast"

End Sub

Private Sub UserForm_Activate()

On Error Resume Next

r.FindFirst ("[" & r.Fields(0).Name & "] = [" & r.Fields(0).Name & "]")

If Err.Number <> 0 Then

Err.Clear

MsgBox "Загруженная таблица или запрос в форму не подерживает методы просмотра Find. Форма будет закрыта!"

Unload Me

End If

End Sub

Private Sub UserForm_Initialize()

'При загрузке формы устанавливаем указатели на базу

Set db = Workspaces(0).OpenDatabase(ПутькБазе)

Set r = db.OpenRecordset(ИмяТаблицы)

'Имя таблицы в заголовок формы

Me.Caption = ИмяТаблицы

'Загрузка имен полей

Label1.Caption = r.Fields(0).Name

Label2.Caption = r.Fields(1).Name

'Коментарии к полям ввода

Label123.Caption = "Ввод команды для поиска"

ComboBox1.Text = "(Выбор имени поля для команды)"

Dim i As Long

Search1.Text = ""

ComboBox1.Clear

For i = 0 To r.Fields.Count - 1

ComboBox1.AddItem r.Fields(i).Name

Next i

ОбновитьПоля

End Sub

Приложение 8 (Обращение к api-функциям) Введение

Иногда возникает необходимость обратиться непосредственно к операционной системе. Это требует использование дополнительных функций. Доступ к таким функциям осуществляется через интерфейс прикладных программ – Win 32 API (Application Programming Interface). При помощи функций Win 32 API можно выполнить такие действия в VBA или в VB, которые невозможно спрограммировать обычными операторами VB. Или при помощи данных функций можно заставить работать программу VB значительно быстрей. Объявляется API функции или процедура в главной области модуля следующим образом:

‘Объявление процедуры

[Public/Private] Declare Sub Имя Lib "имяБиблиотеки" _

[Alias ИмяВБиблиотеке ] ( [списокАргументов] )

‘Объявление функции

[Public / Private] Declare Function Имя Lib "имяБиблиотеки" _

[Alias ИмяВБиблиотеке ] ( [списокАргументов] ) [ As Тип]

Как видно из форматов объявления, объявление подпрограмм API несколько напоминает объявления заголовка обычных подпрограмм. Надо знать, что Имя подпрограмм должно набираться с учетом регистра символов. За служебным словом Lib указывается имя библиотеки, в которой находится подпрограмма. Если не опущено служебное слово Alias, то за ним вводится настоящее имя вызываемой подпрограммы (ИмяВБиблиотеке), а параметр Имя является псевдонимом для вызова объявленной API подпрограммы из модуля VBA. Причина назначения псевдонима может быть разная, просто смена имени, или смена имени подпрограммы, если оно конфликтует с другими идентификаторами проекта или библиотек, или если имя содержит запретный символ для идентификатора языка VBA.

Для получения имен API функций , полезно иметь установленный на компьютер VB 6.0 (или более старшую версию языка). Для просмотра имен API функций загружают приложение API Viewer следующим образом:

Запустить Microsoft Visual Basic 6.0

Запустить приложение API Viewer через меню Visual Basic: Add-Ins - API Viewer

В появившемся окне войти в меню: FileLoad Text File

Открыть библиотеку имен функций - Win32api

В разделе API Type: выбрать пункт Declare. В разделе Available Items: выбрать двойным кликом мыши имя необходимой функции. В разделе Selected Items: скопировать в буфер обмена объявление выбранной функции. (см. Рис. 31)

Рис. 31 Окно приложения API Viewer

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]