Microsoft Accessの標準タブコントロールをカスタマイズして、モダンでスタイリッシュなデザインのタブ切り替えインターフェースを実装する方法を解説します。標準のタブを非表示にし、オリジナルのボタンとVBAコードを組み合わせることで、見た目と操作性を大幅に向上させることができます。
対象OS Windows 10、Windows 11
Accessタブコントロールの課題とカスタマイズのメリット
Microsoft Accessの標準タブコントロールは、複数のページを切り替えて表示できる便利なコントロールですが、デザインの自由度が低く、タブの色やフォント、形状などを細かく変更することができません。そのため、モダンなWebアプリケーションと比較すると見た目が古く感じられることがあります。
この記事では、標準のタブ切り替え部分を非表示にして、代わりにオリジナルのボタンを配置し、VBAでタブ切り替えの機能を実装することで、完全にカスタマイズ可能なタブインターフェースを作成する方法を紹介します。この方法を使えば、企業のブランドカラーに合わせたデザインや、アクティブなタブを視覚的に強調する動的な効果も実現できます。カスタマイズに必要な手順は、タブコントロールの基本設定、ボタンの作成・デザイン、VBAコードの実装の3つのステップに分かれます。
1. タブコントロールの基本設定
最初のステップとして、フォームにタブコントロールを配置し、標準のタブ部分(切り替え用のつまみ)を非表示にする設定を行います。タブの外観を非表示にしても、VBAからページの切り替えは可能です。
-
Accessを起動し、タブコントロールを設置したいフォームをデザインビューで開きます。
-
リボンの「フォームデザイン」タブにある「コントロール」グループから「タブコントロール」を選択し、フォーム上の任意の位置に配置します。
-
配置したタブコントロールを右クリックし、コンテキストメニューから「プロパティ」を選択します。

タブコントロールのプロパティを開きます。 -
プロパティシートの「書式」タブを開き、「スタイル」プロパティを「なし」に設定します。

スタイルを「なし」に設定します。 -
プロパティシートの「その他」タブを開き、タブコントロールの「名前」プロパティを分かりやすいものに変更します(例:TabMain)。

「その他」タブで名前を「TabMain」に変更します。 -
引き続き「書式」タブで、タブコントロールの背景スタイルを「透明」、境界線スタイルを「透明」に設定します。これにより、タブコントロール自体の枠線が消え、フォームの背景と一体化したクリーンな見た目になります。

書式を設定してモダンなデザインにします。
タブコントロールのサイズや位置は後からドラッグ操作で自由に調整できるので、この段階では大まかな配置で問題ありません。フォーム上でタブ内に表示するコントロールの量を考慮して、十分なスペースを確保してください。
「スタイル」を「なし」にすると、タブコントロール上部に表示されていた切り替え用のタブ(つまみ部分)が完全に非表示になります。これにより、ユーザーはマウスでタブを直接クリックして切り替えることができなくなりますが、この後の手順でVBAコードによる切り替え機能を実装します。
タブコントロールには、デフォルトで2つのページが用意されています。必要に応じてページを追加するには、タブコントロールを右クリックして「ページの挿入」を選択します。追加したページには、プロパティシートの「その他」タブから分かりやすい名前(例:pageOverview、pageDetails)を付けてください。次の手順で作成するオリジナルボタンは、ページ数と同じ数だけ用意します。
2. オリジナルタブボタンの作成とデザイン
次に、非表示にしたタブの代わりとなるオリジナルのボタンを作成し、デザインをカスタマイズします。ここでは例として、テキストベースのシンプルなボタンの設置方法を紹介します。
-
リボンの「フォームデザイン」タブにある「コントロール」グループから「ボタン」を選択し、タブコントロールの上部にボタンを配置します。ボタンコマンドウィザードが表示された場合は「キャンセル」をクリックしてください。
-
各タブページに対応する数のボタンを横並びに配置します。例えば、タブページが3つある場合は、3つのボタンを横に並べます。
-
最初のボタンを選択してプロパティシートを開き、「書式」タブの「標題」プロパティをボタンに表示したいテキストに変更します(例:「⚫︎」や任意のラベル名)。

ボタンの標題を設定します。 -
プロパティシートの「その他」タブを開き、ボタンの「名前」プロパティを設定します。VBAコードで参照するため、「btnTab1」「btnTab2」「btnTab3」のように連番で分かりやすい名前にしてください。

後でVBAコードで参照するため、分かりやすい名前にします。 -
残りのボタンについても同様に、プロパティシートで「標題」と「名前」を設定します。すべてのボタンで統一感のあるデザインになるように、フォントサイズやボタンのサイズも揃えてください。

統一感のあるデザインで配置します。 -
各ボタンの「書式」タブを開き、前景色を「#313131」(濃いグレー)に設定します。さらに、背景スタイルを「透明」、境界線スタイルを「透明」に設定して、ボタンの装飾を最小限にします。

統一感のあるデザインで配置します。
ボタンの背景色やフォントを変更して、アクティブなタブと非アクティブなタブを視覚的に区別できるようにすると操作性が向上します。また、ボタンに画像(アイコン)を設定したり、ボタンの形状を工夫するなど、用途に応じたデザインのカスタマイズが可能です。
すべてのボタンの設定が完了したら、配置を調整して等間隔に並べてください。複数のボタンを選択した状態で、リボンの「配置」タブにある「配置」機能を使うと、左揃え・等間隔配置などを簡単に行えます。
3. VBAコードでタブ切り替え機能を実装
最後のステップとして、VBAコードを使用してボタンクリック時にタブを切り替える機能を実装します。各ボタンのクリックイベントにコードを追加し、タブの表示ページを切り替えると同時に、ボタンの見た目も連動して変化するようにします。
-
デザインビューで最初のタブボタン(btnTab1)を選択し、プロパティシートの「イベント」タブを開きます。
-
「クリック時」イベントの右側にある「…」(ビルド)ボタンをクリックし、表示されるダイアログで「コードビルダ」を選択して「OK」をクリックします。
-
VBAエディタ(Visual Basic
Editor)が起動したら、btnTab1_Clickプロシージャ内に以下のコードを入力します。このコードは、タブコントロールの表示を1ページ目(インデックス0)に切り替え、ボタンのスタイルを更新します。

タブを切り替えるコードを入力します。Private Sub btnTab1_Click() Me.TabMain.Value = 0 Call UpdateTabButtonStyle(0) End Sub -
同様に、他のタブボタンにもクリックイベントのコードを追加します。btnTab2_Click()では
Value に 1 を、btnTab3_Click() では Value に
2を渡します。タブページのインデックスは0から始まるため、ページの順番に合わせて番号を設定してください。

2番目のタブはValue = 1、3番目はValue = 2と設定します。 -
続けて、アクティブなタブボタンの前景色を変更してどのタブが選択されているか視覚的にわかるようにする、UpdateTabButtonStyle関数を同じモジュール内に追加します。コードの詳細はこの手順の下にある「ワンポイント」を参照してください。

ボタンの見た目を動的に変更する関数を作成します。 -
すべてのコードを入力したら、VBAエディタを閉じてフォームを上書き保存します。フォームビューに切り替えて、各ボタンをクリックしたときにタブページが正しく切り替わり、クリックしたボタンの色が濃く表示されることを確認してください。

ボタンをクリックしてタブが切り替わることを確認します。
タブ切り替えボタンのスタイル更新コード
以下は、タブ切り替え時にボタンの前景色を動的に変更する UpdateTabButtonStyle関数のコードです。この関数では、まずすべてのボタンの前景色を薄いグレー(#9A9A9A)にリセットした後、引数で指定されたアクティブなタブに対応するボタンだけを濃いグレー(#313131)に変更します。ボタンの数を増やした場合は、関数内に対応するボタンの処理を追加してください。
Private Sub UpdateTabButtonStyle(ActiveTab As Integer)
' すべてのボタンを非アクティブスタイルに(前景色を薄いグレーに)
Me.btnTab1.ForeColor = RGB(154, 154, 154) ' #9A9A9A
Me.btnTab2.ForeColor = RGB(154, 154, 154) ' #9A9A9A
Me.btnTab3.ForeColor = RGB(154, 154, 154) ' #9A9A9A
' アクティブなボタンの前景色を濃いグレーに
Select Case ActiveTab
Case 0
Me.btnTab1.ForeColor = RGB(49, 49, 49) ' #313131
Case 1
Me.btnTab2.ForeColor = RGB(49, 49, 49) ' #313131
Case 2
Me.btnTab3.ForeColor = RGB(49, 49, 49) ' #313131
End Select
End Sub
フォームの読み込み時に1番目のタブがアクティブな状態でボタンのスタイルを初期化したい場合は、フォームの「読み込み時」イベントに以下のコードを追加してください:Call UpdateTabButtonStyle(0)
関連サイト(外部)