- Home ›
- Excel VBA入門 ›
- 入力フォームの作成
タブストリップの利用
タブを切り替えることでコントロールに表示される値を変化させることが出きるタブストリップの利用方法について解説します。
(2022 年 06 月 18 日公開 / 2022 年 06 月 18 日更新)
タブストリップを作成する
タブストリップを作成する方法を見ていきます。タブストリップを作成するにはツールボックス上で下記のアイコンをクリックします。
アイコンをクリックした後でフォーム上でマウスをドラッグしてタブストリップを作成します。
タブを追加する
タブストリップを作成するとデフォルトでタブが2つ作成されます。タブを設計段階で追加するには以下のように行います。
まずタブストリップをクリックして選択します。次のようにタブストリップが薄い枠線で囲まれます。
タブストリップを編集するにはさらにもう一度クリックします。次のようにタブストリップが濃い枠線で囲まれます。
この状態でタブストリップの上でマウスを右クリックします。すると次のようなメニューが表示されます。
タブを追加するには「新しいページ」をクリックします。すると次のようにタブが追加されます。
オブジェクト名の設定
VBAから操作するにあたってタブストリップのオブジェクト名を設定しておきます。タブストリップのプロパティウィンドウを見てください。
オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「monthTab」に変更します。
タブに表示される文字列を設定する
タブストリップには複数のタブが含まれます。それぞれのタブに表示される文字列を設定する方法を確認します。
まず設定したいタブをTabオブジェクトとして取り出します。個々のタブを取り出すには、タブごとにオブジェクト名を設定しておく方法もありますが、今回はインデックス番号を使って個々のタブを取り出します。
タブは先頭から順に0,1,2・・・とインデックス番号が設定されています。全てのタブはTabsコレクションに含まれますので先頭のタブは次のように取り出すことができます。
monthTab.Tabs(0)
取り出したTabオブジェクトに表示されている文字列を変更するには「Caption」プロパティを使います。
object.Caption [= String]
オブジェクトの上に表示するオブジェクト名または説明テキストを設定します。 object には設定するオブジェクトを指定します。設定する値の String にはキャプションとして表示されるテキストを示す文字列式を指定します。
実際の使い方としては次のようになります。
sampleForm.monthTab.Tabs(0).Caption = "1月" sampleForm.monthTab.Tabs(1).Caption = "2月"
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.monthTab.Tabs(0).Caption = "1月" sampleForm.monthTab.Tabs(1).Caption = "2月" sampleForm.monthTab.Tabs(2).Caption = "3月" sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
タブを切り替えた時の処理
タブを切り替えた時にコントロールに表示される値を書き換える方法を確認します。
まずタブストリップにテキストボックスを1つ配置します。
タブストリップ上でタブを切り替えてもこのテキストボックスは共通して表示されます。テキストボックスのオブジェクト名を「salesText」とします。
次に現在どのタブが表示されているかを取得します。タブストリップに対して「Value」プロパティを使います。
object.Value [= Variant]
コントロールの状態、またはその内容を設定します。 object には設定するオブジェクトを指定します。設定する値の Variant には現在アクティブなタブを表す整数値を表します。
タブのインデックス番号を所得することが出来ます。最初のタブは0です。
あとはタブストリップ上のイベント処理でタブが切り替えられた時に発生する「Change」イベント上で、アクティブなタブに対する値をコントロールに表示します。
実際の使い方としては次のようになります。
Private Sub monthTab_Change() Dim index As Integer index = monthTab.Value If index = 0 Then salesText.Text = "8,000" ElseIf index = 1 Then salesText.Text = "21,000" ElseIf index = 2 Then salesText.Text = "15,000" End If End Sub
サンプルプログラム
では簡単なサンプルで試してみましょう。タブストリップのChangeイベントに次のように記述します。
Private Sub monthTab_Change() Dim index As Integer index = monthTab.Value If index = 0 Then salesText.Text = "8,000" ElseIf index = 1 Then salesText.Text = "21,000" ElseIf index = 2 Then salesText.Text = "15,000" End If End Sub
また呼びだすマクロは次の通りです。
Sub テスト() Load sampleForm sampleForm.monthTab.Tabs(0).Caption = "1月" sampleForm.monthTab.Tabs(1).Caption = "2月" sampleForm.monthTab.Tabs(2).Caption = "3月" sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
タブを切り替えるとその時表示されたタブに対応する値がコントロールに表示されます。
タブに表示する値にシートのセルを指定する
タブを切り替えた時にコントロールに表示される値にExcelのシートに入力された値を表示する方法を確認します。
タブに配置されているコントロールの値をシートのセルで指定するには「ControlSource」プロパティを使います。
object.ControlSource [= String]
Value プロパティにリンクさせる Excel ワークシートのセル範囲を指定します。 object には設定するオブジェクトを指定します。設定する値の String にはコントロールの Value プロパティにリンクさせるワークシートのセルを指定します。
このプロパティはタブストリップ上に配置されているコントロールに対して設定します。例としてテキストボックスが配置されている時は次のように記述します。
Private Sub monthTab_Change() Dim index As Integer index = monthTab.Value If index = 0 Then salesText.ControlSource = "ListSheet!C2" ElseIf index = 1 Then salesText.ControlSource = "ListSheet!C3" ElseIf index = 2 Then salesText.ControlSource = "ListSheet!C4" End If End Sub
サンプルプログラム
では簡単なサンプルで試してみましょう。タブストリップのChangeイベントに次のように記述します。
Private Sub monthTab_Change() Dim index As Integer index = monthTab.Value + 2 salesText.ControlSource = "ListSheet!C" & index End Sub
また呼びだすマクロは次の通りです。
Sub テスト() Load sampleForm sampleForm.monthTab.Tabs(0).Caption = "1月" sampleForm.monthTab.Tabs(1).Caption = "2月" sampleForm.monthTab.Tabs(2).Caption = "3月" sampleForm.Show End Sub
Excelシートを次のように用意しておきます。
上記マクロを実行すると次のように表示されます。
タブを切り替えるとその時表示されたタブに対応するシートのセルの値がコントロールに表示されます。
またコントロールの値を書き換えると元になっているExcelシートのセルの値も書き換えられます。
-- --
タブを切り替えることでコントロールに表示される値を変化させることが出きるタブストリップの利用方法について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。