■ データシートの列を表示/非表示に切り替える (2000,2002,2003,2007)

図 データシートの列を表示/非表示に切り替える
データシートの列(カラム)を表示/非表示に切り替えます。メインフォームが表示されたら、[得意先ID]、[得意先名]、[担当者名]、[電話番号]のトグルボタンをクリックします。最後に[表示]ボタンをクリックすると、サブフォームのデータシートにトグルボタンで選択した列(得意先ID、得意先名、担当者名、電話番号)が表示されます。
1. 新規データベース作成
Accessを起動したら、ツールバーから新規作成のアイコン
をクリックして、作業フォルダworkにW112.mdbを作成します。
2. テーブル、クエリをインポート
Windowsのエクスプローラから、112.mdb(このページの最後からダウンロードできます)をダブルクリックして開きます。データベースウィンドウのオブジェクトから[テーブル]をクリックしたら、得意先テーブル(tblCustomers)をドラッグしてW112.mdbのデータベースウィンドウにドロップします。同様の手順で、得意先クエリ(qryCustomers)をドラッグ&ドロップします。テーブル、クエリをインポートしたら、112.mdbを閉じます。
3. サブフォーム作成
データベースウィンドウのオブジェクトから[フォーム]を選択したら、[新規作成]ボタンをクリックします。「新しいフォーム」のダイアログが表示されたらリストボックスから[オートフォーム:データシート]を選択します。基になるテーブルまたはクエリの選択から[qryCustomers]を選択します。[OK]ボタンをクリックしてダイアログを閉じます。
ツールバーから上書き保存のアイコン
をクリックして「fsubCustomers」の名称で保存したら、閉じるボタン
をクリックします。

図 得意先テーブルのサブフォームを作成したら「fsubCustomers」の名称で保存する
4. メインフォーム作成
データベースウィンドウのオブジェクトから[フォーム]を選択したら、新規オブジェクトのショートカットから「デザインビューでフォームを作成する」をダブルクリックします。メニューバーから[表示]→[フォームヘッダー/フッター]を選択します。フォームのデザインビューにフォームヘッダーとフォームフッターが表示されたら、フォームフッターの高さを0にします。
5. トグルボタンとコマンドボタン作成
ツールボックスのコントロールウィザードのアイコン
をクリックして、コントロールウィザードを無効にします。ツールボックスからトグルボタンのアイコン
をクリックしたら、フォームヘッダーにドラッグします。同様の手順で合計6個のトグルボタンを作成したら、縦3行と横2列に並べ替えます。ツールボックスからコマンドボタンのアイコン
をクリックしたら、フォームヘッダーにドラッグします。フォームヘッダーに作成したコントロールをダブルクリックしてプロパティウィンドウを表示したら、表のように設定します。

図 フォームヘッダーにトグルボタンとコマンドボタン作成
表 フォームヘッダーに作成したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
トグルボタン1 |
名前 |
tglColumn1 |
|
タグ |
CustomerID |
|
|
標題 |
得意先ID |
|
|
トグルボタン2 |
名前 |
tglColumn2 |
|
タグ |
CompanyName |
|
|
標題 |
得意先名 |
|
|
トグルボタン3 |
名前 |
tglColumn3 |
|
タグ |
Ken |
|
|
標題 |
都道府県 |
|
|
トグルボタン4 |
名前 |
tglColumn4 |
|
タグ |
ContactName |
|
|
標題 |
担当者名 |
|
|
トグルボタン5 |
名前 |
tglColumn5 |
|
タグ |
ContactTitle |
|
|
標題 |
部署役職 |
|
|
トグルボタン6 |
名前 |
tglColumn6 |
|
タグ |
Phone |
|
|
標題 |
電話番号 |
|
|
コマンドボタン |
名前 |
cmdView |
|
標題 |
表 示 |
6. メインフォームにサブフォームを貼り付ける
データベースウィンドウからサブフォーム[fsubCustomers]をドラッグしたら、フォームの詳細セクションにドロップします。

図 メインフォームの詳細セクションにサブフォームをドラッグ&ドロップする
7. コマンドボタンのOnClickイベント登録
ツールバーからコードのアイコン
をクリックしてVBE(Visual Basic Editor)を表示します。コードビューが表示されたら、オブジェクトのドロップダウンリストから[cmdView]を選択します。コマンドボタンのOnClickイベントが生成されたら、次のコードを追加します。
Private Sub cmdView_Click()
Dim fsub As Access.SubForm
Dim tgl As Access.ToggleButton
Dim strCtlName As String
Dim intI As Integer
Const acSizeToFit = -2
Set fsub = Me.fsubCustomers
For intI = 1 To 6
Set tgl = Me("tglColumn" & intI)
strCtlName = tgl.Tag
If tgl.Value = True Then
fsub.Form(strCtlName).ColumnOrder = intI
fsub.Form(strCtlName).ColumnHidden = False
fsub.Form(strCtlName).ColumnWidth = acSizeToFit
Else
fsub.Form(strCtlName).ColumnHidden = True
End If
Next
End Sub
8. メインフォームを開く
VBEのツールバーから表示(Access)のアイコン
をクリックして、Accessのウィンドウに切り替えます。Accessのツールバーからフォームビューのアイコン
をクリックしてメインフォームを開きます。メインフォームのヘッダーから[得意先名]と[担当者名]のトグルボタンをクリックします。[表示]ボタンをクリックすると、サブフォームのデータシートに得意先名と担当者名が表示されます。

図 データシートに得意先名と担当者名の列を表示した例
●解説
データシートの列を表示/非表示に切り替えるには、列のテキストボックスのColumnHiddenプロパティをFalse/Trueに設定します。このサンプルでは、[表示]ボタンのOnClickイベントで、トグルボタンがクリック(True)されているか調べて、データシートのColumnHiddenプロパティをFalse/Trueに設定します。
Private Sub cmdView_Click()
Dim fsub As Access.SubForm
Dim tgl As Access.ToggleButton
Dim strCtlName As String
Dim intI As Integer
Const acSizeToFit = -2
Set fsub = Me.fsubCustomers ‘ サブフォームのオブジェクト取得
For intI = 1 To 6
Set tgl =
Me("tglColumn" & intI) ' トグルボタン(tglColumn1-6 )のオブジェクト取得
strCtlName = tgl.Tag ‘ トグルボタンのタグからテキストボックスのコントロール名取得
If tgl.Value = True Then ‘ トグルボタンがTrueのとき以下の処理を行う
fsub.Form(strCtlName).ColumnOrder = intI ‘ データシートの列順設定
fsub.Form(strCtlName).ColumnHidden = False ‘ データシートの列を表示する
fsub.Form(strCtlName).ColumnWidth = acSizeToFit ‘ データシートの列幅自動調整
Else ‘ トグルボタンがFalseのとき以下の処理を行う
fsub.Form(strCtlName).ColumnHidden = True ‘ データシートの列を非表示にする
End If
Next
End Sub