- Access97のサンプルデータベースNorthwind.mdbを開きます。
- データベースウインドウが表示されたらフォームのタブをクリックして新規作成のボタンをクリックします。
- フォーム上にトグルボタンを使用したオプショングループとリストボックスを作成します。
 |
| 図1-フォーム上にオプショングループとリストボックスを作成した例 |
|
- オプショングループとリストボックスのプロパティを以下のように設定します。
| Object |
Property |
Setting |
| リストボックス |
Name |
lstObjects |
| Column Count |
1 |
| Column Heads |
No |
| Row Source Type |
Value List |
| Row Source |
|
| Bound Column |
0 |
| オプショングループ |
Name |
grpObjects
| 値 |
トグルボタン1-6 |
| 0 |
Table |
| 1 |
Query |
| 2 |
Form |
| 3 |
Report |
| 4 |
Macro |
| 5 |
Module |
|
| Default Value |
3 |
- オプショングループのAfterUpdateイベントに以下のコードをコピー&ペーストします。
Private Sub grpObjects_AfterUpdate()
Dim db As Database
Dim tdf As TableDef
Dim qdf As QueryDef
Dim ctr As Container
Dim doc As Document
Dim strName As String
Dim strOutput As String
Dim fSystemObj As Boolean
Set db = CurrentDb()
With db
Select Case grpObjects
Case acTable
.TableDefs.Refresh
For Each tdf In .TableDefs
With tdf
fSystemObj = _
IsSystemObject(acTable, .Name, .Attributes)
If Not fSystemObj And _
((.Attributes And dbHiddenObject) = 0) Then
strOutput = strOutput & ";" & .Name
End If
End With
Next tdf
Case acQuery
.QueryDefs.Refresh
For Each qdf In .QueryDefs
With qdf
fSystemObj = IsSystemObject(acQuery, .Name)
If Not fSystemObj Then
strOutput = strOutput & ";" & .Name
End If
End With
Next qdf
Case acForm
Set ctr = .Containers("Forms")
Case acReport
Set ctr = .Containers("Reports")
Case acMacro
Set ctr = .Containers("Scripts")
Case acModule
Set ctr = .Containers("Modules")
End Select
End With
Select Case grpObjects
Case acForm, acReport, acMacro, acModule
ctr.Documents.Refresh
For Each doc In ctr.Documents
strName = doc.Name
fSystemObj = IsSystemObject(grpObjects, strName)
If Not fSystemObj And _
Not IsDeleted(strName) Then
strOutput = strOutput & ";" & strName
End If
Next doc
End Select
strOutput = Mid(strOutput, 2)
lstObjects.RowSource = strOutput ' Max 2048
lstObjects = 0
End Sub
|
- フォーム上のモジュールにAfterUpdateイベントで使用する関数IsDeleted()とIsSystemObject()をコピー&ペーストします。
Private Function IsDeleted(ByVal strName As String) As Boolean
IsDeleted = (Left(strName, 7) = "~TMPCLP")
End Function
Private Function IsSystemObject(intType As Integer, _
ByVal strName As String, _
Optional ByVal varAttribs As Variant)
If IsMissing(varAttribs) Then
varAttribs = 0
End If
If (Left(strName, 4) = "USys") Or _
Left(strName, 4) = "~sq_" Then
IsSystemObject = True
Else
IsSystemObject = ((intType = acTable) And _
((varAttribs And dbSystemObject) <> 0))
End If
End Function
|
- フォームをビューモードに切り替えて確認します。
 |
| 図2-リストボックスにNorthwind.mdbのテーブル一覧を表示させた例 |
|
Tip1
リストボックスからオブジェクトをクリックしたときは、オブジェクトをデザインモードで開くには以下のようにします。
Dim strObject As String
strObject = lstObjects.Column(0)
Select Case grpObjects
Case acTable
DoCmd.OpenTable strObject, acDesign
Case acQuery
DoCmd.OpenQuery strObject, acDesign
Case acForm
DoCmd.OpenForm strObject, acDesign
Case acReport
DoCmd.OpenReport strObject, acDesign
Case acMacro
DoCmd.SelectObject acMacro, strObject, True
SendKeys "%d", True
Case acModule
DoCmd.OpenModule strObject
End Select
|
Tip2
リストボックスからオブジェクトをクリックしたときは、オブジェクトを開くには以下のようにします。
Dim strObject As String
strObject = lstObjects.Column(0)
Select Case grpObjects
Case acTable
DoCmd.OpenTable strObject
Case acQuery
DoCmd.OpenQuery strObject
Case acForm
DoCmd.OpenForm strObject
Case acReport
DoCmd.OpenReport strObject, acPreview
Case acMacro
DoCmd.RunMacro strObject
Case acModule
End Select
|