VBAでのタブストリップ(TabStrip)の使い方とプロパティおよびイベント
Excel VBA からタブストリップ(TabStrip)コントロールを利用する方法です。タブストリップは同じコントロールに対してタブを切り替えると異なる値を表示する場合に使用されるコントロールです。ここでは Excel のユーザーフォームで設置できるタブストリップを VBA から使用する方法と、タブストリップで設定可能なプロパティおよびイベントの一覧について解説します。
(Last modified: )
目次
タブストリップのプロパティ一覧
ユーザーフォームに設置するタブストリップで利用可能なプロパティ一覧は次の通りです。
BackColor ControlTipText Enabled Font ForeColor Height HelpContextID Left MouseIcon MousePointer MultiRow Style TabFixedHeight TabFixedWidth TabIndex TabOrientation TabStop Tag Top Value Visible Width
タブストリップの既定のプロパティは SelectedItem
プロパティです。
いくつかのプロパティについてはこのあと簡単に解説します。
タブストリップの基本的な使い方
タブストリップには他のコントロールを設置することができます(ただし実際にはコントロールはタブストリップに追加されるのではなくユーザーフォームに追加されています)。
タブストリップには複数のタブが表示されていますが、タブを切り替えてもタブストリップに設置したコントロールには変化がありません。同じコントロールが表示されます。
タブストリップでは、タブを切り替えるとコントロールそのものを変えるのではなくコントロールに表示される値が変化させます。タブストリップのタブを切り替えた時にタブストリップ内のコントロールの状態を変化させるコードの記述方法については「タブストリップでタブを切り替えたときの処理を記述する」を参照されてください。
なおタブストリップと似ているマルチページでは、ページ毎に表示するコントロールを設置するのでページを切り替えると表示されるコントロールそのものが変わります。
タブストリップにタブを追加する
タブストリップにタブを追加する方法です。まず Visual Basic Editor の画面で行う方法を確認します。ユーザーフォームにタブストリップを追加してください。
タブストリップにはデフォルトでタブは 2 つ追加されています。タブを追加するには、タブストリップの上で一度クリックしてください。タブストリップが薄い枠線で囲まれます。
もう一度タブストリップの上で一度クリックしてください。タブストリップが今度は濃い枠線で囲まれます。
この状態でタブストリップの上で右クリックし、表示されたメニューの中から「新しいページ」をクリックしてください。
タブストリップにタブが追加されました。
VBAを使ってタブストリップにタブを追加する
VBA を使ってプログラムの中からタブストリップにタブを追加する方法です。タブを追加するには TabStrip
オブジェクトの Tabs
コレクションに対して Add
メソッドを使います。
Set myTab = オブジェクト.Add([ Name [, Caption [, index ]]])
省略可能な 1 番目の引数に追加するタブのオブジェクト名を指定します。同じく省略可能な 2 番目の引数にタブに表示される文字列を指定します。同じく省略可能な 3 番目の引数に追加するタブの位置を表すインデックスを指定します。省略した場合は最後に追加されます。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、タブストリップにタブを追加しています。
Option Explicit Private Sub UserForm_Initialize() TabStrip1.Tabs.Add End Sub
ユーザーフォームを表示すると、表示されたタブストリップにタブが追加されているのが確認できます。
タブストリップのタブに表示する文字列を設定する(Caption)
タブストリップのタブに表示する文字列を設定する方法ですです。まず Visual Basic Editor の画面で行う方法を確認します。タブを追加したときと同じ手順でタブストリップを 2 回クリックしてください。タブストリップが濃い枠線で囲まれます。
文字列を変更したいタブの上で右クリックし、表示されたメニューの中から「名前の変更」をクリックしてください。
次のようなウィンドウが表示されるので「キャプション」の右にあるテキストボックスでタブに表示される文字列を編集してください。編集が終わったら「OK」をクリックしてください。
タブに表示される文字列が変更されました。
VBAを使ってタブに表示する文字列を設定する
VBA を使ってプログラムの中からタブに表示される文字列を変更する方法です。タブストリップに追加されているタブのオブジェクトは、タブストリップのオブジェクト名が TabStrip1
だった場合、それぞれ次のようにインデックスを指定して参照することができます。
TabStrip1.Tabs(0) TabStrip1.Tabs(1) TabStrip1.Tabs(2)
最初のタブのインデックスが 0 で、そのあとは順番に 1, 2, ... と続いていきます。
それぞれのタブに表示される文字列を変更するには、参照したタブの Caption
プロパティに値を設定します。
オブジェクト.Caption [= String ]
タブに表示する文字列を代入してください。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、タブストリップのタブに表示する文字列を設定しています。
Option Explicit Private Sub UserForm_Initialize() TabStrip1.Tabs(0).Caption = "本社" TabStrip1.Tabs(1).Caption = "関西支社" End Sub
ユーザーフォームを表示すると、表示されたタブストリップのタブに設定した文字列が表示されているのが確認できます。
タブストリップの表示位置を設定する(Top,Left)
タブストリップが表示される位置を設定するには Top
プロパティと Left
プロパティに値を設定します。
オブジェクト.Top [= Single ] オブジェクト.Left [= Single ]
Top
プロパティにはユーザーフォームの上端からタブストリップの上端までの距離、 Left
プロパティにはユーザーフォームの左端からタブストリップの左端までの距離をそれぞれ単精度浮動小数点型の数値で代入します。単位はポイントです。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、タブストリップの位置を設定しています。
Option Explicit Private Sub UserForm_Initialize() TabStrip1.Top = 50 TabStrip1.Left = 60 End Sub
ユーザーフォームを表示すると、表示されたタブストリップが指定した位置で表示されているのが確認できます。
タブストリップの幅と高さを設定する(Width,Height)
タブストリップの幅と高さを設定するには幅については Width
プロパティ、高さについては Height
プロパティに値を設定します。
オブジェクト.Width [= Single ] オブジェクト.Height [= Single ]
幅および高さをあらわす単精度浮動小数点型の数値を代入してください。単位はポイントです。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、タブストリップの幅と高さを設定しています。
Option Explicit Private Sub UserForm_Initialize() TabStrip1.Width = 160 TabStrip1.Height = 70 End Sub
ユーザーフォームを表示すると、表示されたタブストリップの幅および高さが指定した値に設定されているのが確認できます。
タブストリップのタブで使用するフォントを設定する(Font)
タブストリップのタブに表示される文字列のフォントを設定するには Font
プロパティに値を設定します。 Font
プロパティは Font
オブジェクトを返します。 Font
オブジェクトのプロパティに対して値を設定していくことでフォントに関する設定を行うことができます。
Font
オブジェクトには多くのプロパティが用意されていますが、よく使用されるものは次のプロパティです。
Name フォント名 Size フォントサイズ Bold 太字 Italic 斜体 Underline 下線 Strikethrough 取り消し線
例えばフォント名を設定する場合は次のように記述します。例えば "MS UI Gothic" や "MS 明朝" などを代入します。
オブジェクト.Font.Name = フォント名を表す文字列
フォントサイズを設定する場合は次のように記述します。
オブジェクト.Font.Size = フォントサイズを表す数値
太字、斜体、取り消し線を設定する場合は、対応するプロパティに「True」を設定してください。
オブジェクト.Font.Bold = True オブジェクト.Font.Italic = True オブジェクト.Font.Strikethrough = True
下線を設定する場合は、次のいずれかの値を設定してください。
定数 | 値 | 説明 |
---|---|---|
xlUnderlineStyleDouble | -4119 | 二重下線 |
xlUnderlineStyleDoubleAccounting | 5 | 二重下線(会計) |
xlUnderlineStyleNone | -4142 | 下線なし |
xlUnderlineStyleSingle | 2 | 一重下線 |
xlUnderlineStyleSingleAccounting | 4 | 一重下線(会計) |
オブジェクト.Font.Underline = xlUnderlineStyleSingle
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、タブストリップのタブに表示される文字列のフォントサイズや書式を設定しています。
Option Explicit Private Sub UserForm_Initialize() TabStrip1.Font.Size = 14 TabStrip1.Font.Bold = True TabStrip1.Font.Underline = xlUnderlineStyleSingle End Sub
ユーザーフォームを表示すると、表示されたタブストリップのタブに指定したフォントの設定が行われているのが確認できます。
タブストリップのタブを表示する位置を設定する(TabOrientation)
タブストリップでタブをどの位置に表示するのかを設定するには TabOrientation
プロパティに値を設定します。
オブジェクト.TabOrientation [= fmTabOrientation ]
設定可能な値は次の通りです。
定数 | 値 | 説明 |
---|---|---|
fmTabOrientationTop | 0 | タブはコントロールの上に表示されます |
fmTabOrientationBottom | 1 | タブはコントロールの下に表示されます |
fmTabOrientationLeft | 2 | タブはコントロールの左側に表示されます |
fmTabOrientationRight | 3 | タブはコントロールの右端に表示されます |
デフォルトの値は fmTabOrientationTop
となっておりタブはコントロールの上に表示されます。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャにコードを記述し、タブストリップのタブを表示する位置として右側を指定しています。
Option Explicit Private Sub UserForm_Initialize() TabStrip1.TabOrientation = fmTabOrientationRight End Sub
ユーザーフォームを表示すると、タブストリップの右側にタブが表示されているのが確認できます。
なおタブストリップの下側および左側にタブが表示するように設定した場合は、それぞれ次のように表示されます。
タブストリップのイベント一覧
タブストリップで発生するイベント一覧は次の通りです。
BeforeDragOver BeforeDropOrPaste Change Click DblClick Enter Error Exit KeyDown KeyPress KeyUp MouseDown MouseMove MouseUp
タブストリップの既定のイベントは Change
イベントです。
-- --
Excel のユーザーフォームで設置できるタブストリップを VBA から使用する方法と、タブストリップで設定可能なプロパティおよびイベントの一覧について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。