#562 データシートフォームの列の表示/非表示を個別に切り替えるには? フォーム、VBA

データシート形式で表示されているサブフォーム内の、特定の列の表示/非表示を交互に切り替えるVBAのプログラム例です。

Accessでは、「列の再表示」ダイアログや列名の右クリックのショートカットメニューを使ってノンプログラムでデータシートの列の表示/非表示を切り替えることもできますが、このような処理を行うことによって、独自の表示切替のインタフェースを作ることができます。


まず例として、次のようなメイン/サブフォーム形式のフォームを用意します。
フォームのデザイン例
メインフォーム側には「表示切替」というコンボボックスが配置されていますが、ここではプロパティシート上で次のような設定がなされています。
  • 名前 → cbo表示切替
  • 値集合タイプ → 値リスト
  • 値集合ソース → 商品コード;商品名;数量;販売単価;金額
    ※「値集合ソース」プロパティに列挙する値は、サブフォームで列として表示されるコントロールの名前と同じにすることが前提です。

次に、[cbo表示切替]コンボボックスの更新後処理(AfterUpdate)イベントプロシージャを次のようにします。

Private Sub cbo表示切替_AfterUpdate()

  Dim ctl As Control

  'コンボボックスで指定されたコントロールを設定
  Set ctl = Me!frm売上明細_sub.Controls(Me!cbo表示切替)

  'そのコントロールの列の表示/非表示を逆転する
  ctl.ColumnHidden = Not ctl.ColumnHidden

End Sub

ここでは、指定列のコントロールの「ColumnHidden」プロパティのTrue/Falseを切り替えることで、画面上の表示/非表示をコントロールしています(このプロパティがTrueのとき列は非表示となります)。なお、「frm売上明細_sub」はサブフォームコントロールの名前です。


それでは、動作を確認してみます。

最初の状態
最初の状態

コンボボックスから「商品名」を選択します
「商品名」を選択

データシートから「商品名」列が消えます
「商品名」列が消える

コンボボックスから「数量」を選択します
「数量」を選択

データシートから「数量」列が消えます
「数量」列が消える

再度「商品名」を選択します
再度「商品名」を選択

「商品名」列が再表示されます
「商品名」列が再表示される


参考Tips:「#247 列の再表示ダイアログをVBAから表示させる方法」
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved