#701 タブなしタブコントロールの利用法 フォーム、VBA

「タブ」コントロールは、通常、上部のタブでページを切り替えることで、画面に表示するコントロールを切り替えたいときに使います。またコントロールをページでグループ分けすることで、狭い画面領域でも多くのコントロールを一定の場所に表示させることができます。

一方、タブコントロールの使い方を工夫することで、たくさんのコントロールをグループ化する”コンテナ”(入れ物)として利用することができます。

たとえば、デザイン上で同じような位置にあるまったく異なるコントロールを状況に応じて見せたり隠したりしたいとき、あるときは”このコントロールは表示”、”別のコントロールは非表示”といったような切り替えをすべてのコントロールについて行わなければなりません。そのようなとき、それぞれを別のコンテナに入れておけば、”表示するコンテナ/表示しないコンテナ”を切り替えるだけで、各コンテナ内の多くのコントロールの表示/非表示をまとめて切り替えることができます。さらに便利なことに、タブコントロールの場合は”表示されるページは1つだけ”と決まっていますので、表示させたいページを選択するだけで、自動的にそれ以外を非表示にすることができます。


タブコントロールをコンテナとして利用するには、次のようにフォームをデザインします。

  1. タブコントロールをフォームに挿入します。

  2. 複数のページ(=コンテナ=コントロールのグループ)が必要な場合には、タブコントロールを右クリックして[ページの挿入]を実行し、タブ数を増やします。


  3. タブコントロールの「スタイル」プロパティを「なし」に設定します。これがポイント!

    これによって、タブコントロールでありながらタブが表示されなくなります。タイトルで言っている『タブなしタブコントロール』となるわけです。


  4. あとは、タブのページごとに所定のコントロールを配置していきます。



        ※タブがない状態で2ページ目を表示する方法は「補足」を参照

  5. 表示させるページの切り替えは、ボタンのクリックやチェックボックス、オプションボタンなどいろいろな方法・タイミングが考えられますが、ここではフォームが開く際にその引数に応じて切り替えるものとしてプログラムを作ってみます。

    Private Sub Form_Load()
    'フォームの読み込み時

      'OpenArgsによって初期表示するタブのページを設定
      Me!tabMain = Nz(OpenArgs)

    End Sub

    • ここではタブコントロールの名前を「tabMain」としています。
    • ページの「ページインデックス」プロパティは、左のページから「0」、「1」、「2」・・・・となっているものとします。
    • タブコントロールに任意のページインデックスの値を代入することで、そのページがアクティブになります。

実行例:
  • 「DoCmd.OpenForm "タブなしタブコントロール", , , , , , 0(または引数省略)で開いたとき
  • 「DoCmd.OpenForm "タブなしタブコントロール", , , , , , 1で開いたとき


補足
「スタイル」プロパティを「なし」に設定すると、デザイン時にもタブ部分のクリックではページ変更できなくなります。しかしこの「ページ」もひとつのコントロールとして扱われますので、プロパティシート上部のドロップダウンリストで選択して切り替えることができます。
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved