Accessテクニックのホームへ戻る

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

 

データシートの列を表示/非表示に切り替える

 

データシートの列(カラム)を表示/非表示に切り替えます。メインフォームが表示されたら、[得意先ID][得意先名][担当者名][電話番号]のトグルボタンをクリックします。最後に[表示]ボタンをクリックすると、サブフォームのデータシートにトグルボタンで選択した列(得意先ID、得意先名、担当者名、電話番号)が表示されます。

 

 

1. 新規データベース作成

Accessを起動したら、ツールバーから新規作成のアイコンをクリックして、作業フォルダworkW112.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

 

ダウンロード (112.lzh)