タブストリップの利用

タブを切り替えることでコントロールに表示される値を変化させることが出きるタブストリップの利用方法について解説します。

(2022 年 06 月 18 日公開 / 2022 年 06 月 18 日更新)

タブストリップを作成する

タブストリップを作成する方法を見ていきます。タブストリップを作成するにはツールボックス上で下記のアイコンをクリックします。

タブストリップを作成する(1)

アイコンをクリックした後でフォーム上でマウスをドラッグしてタブストリップを作成します。

タブストリップを作成する(2)

タブストリップを作成する(3)

タブを追加する

タブストリップを作成するとデフォルトでタブが2つ作成されます。タブを設計段階で追加するには以下のように行います。

まずタブストリップをクリックして選択します。次のようにタブストリップが薄い枠線で囲まれます。

タブストリップを作成する(4)

タブストリップを編集するにはさらにもう一度クリックします。次のようにタブストリップが濃い枠線で囲まれます。

タブストリップを作成する(5)

この状態でタブストリップの上でマウスを右クリックします。すると次のようなメニューが表示されます。

タブストリップを作成する(6)

タブを追加するには「新しいページ」をクリックします。すると次のようにタブが追加されます。

タブストリップを作成する(7)

オブジェクト名の設定

VBAから操作するにあたってタブストリップのオブジェクト名を設定しておきます。タブストリップのプロパティウィンドウを見てください。

タブストリップを作成する(8)

オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「monthTab」に変更します。

タブストリップを作成する(9)

タブに表示される文字列を設定する

タブストリップには複数のタブが含まれます。それぞれのタブに表示される文字列を設定する方法を確認します。

まず設定したいタブを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)

タブを切り替えた時の処理

タブを切り替えた時にコントロールに表示される値を書き換える方法を確認します。

まずタブストリップにテキストボックスを1つ配置します。

タブを切り替えた時の処理(1)

タブを切り替えた時の処理(2)

タブストリップ上でタブを切り替えてもこのテキストボックスは共通して表示されます。テキストボックスのオブジェクト名を「salesText」とします。

タブを切り替えた時の処理(3)

次に現在どのタブが表示されているかを取得します。タブストリップに対して「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

上記マクロを実行すると次のように表示されます。

タブを切り替えた時の処理(4)

タブを切り替えるとその時表示されたタブに対応する値がコントロールに表示されます。

タブを切り替えた時の処理(5)

タブを切り替えた時の処理(6)

タブに表示する値にシートのセルを指定する

タブを切り替えた時にコントロールに表示される値に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シートを次のように用意しておきます。

タブに表示する値にシートのセルを指定する(1)

上記マクロを実行すると次のように表示されます。

タブに表示する値にシートのセルを指定する(2)

タブを切り替えるとその時表示されたタブに対応するシートのセルの値がコントロールに表示されます。

タブに表示する値にシートのセルを指定する(3)

タブに表示する値にシートのセルを指定する(4)

またコントロールの値を書き換えると元になっているExcelシートのセルの値も書き換えられます。

タブに表示する値にシートのセルを指定する(5)

タブに表示する値にシートのセルを指定する(6)

-- --

タブを切り替えることでコントロールに表示される値を変化させることが出きるタブストリップの利用方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

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