VBAでのマルチページ(MultiPage)の使い方とプロパティおよびイベント
Excel VBA からマルチページ(MultiPage)コントロールを利用する方法です。マルチページはページを切り替えることで同じ画面上で異なるコントロールを表示する場合に使用されるコントロールです。ここでは Excel のユーザーフォームで設置できるマルチページを VBA から使用する方法と、マルチページで設定可能なプロパティおよびイベントの一覧について解説します。
(Last modified: )
目次
マルチページのプロパティ一覧
ユーザーフォームに設置するマルチページで利用可能なプロパティ一覧は次の通りです。
BackColor ControlTipText Enabled Font ForeColor Height HelpContextID Left MultiRow Style TabFixedHeight TabFixedWidth TabIndex TabOrientation TabStop Tag Top Value Visible Width
MultiPage は Pages コレクションのコンテナーであり、それぞれに 1 つ以上の Page オブジェクトが含まれています。ページで利用可能尾なプロパティ一覧は次の通りです。
Accelerator Caption ControlTipText Cycle Enabled Index KeepScrollBarsVisible Picture PictureAlignment PictureSizeMode PictureTiling ScrollBars ScrollHight ScrollLeft ScrollTop ScrollWidth Tag TransitionEffect TransitionPeriod Visible Zoom
マルチページの既定のプロパティは Value プロパティです。このプロパティは MultiPage の Pages
Page のインデックスを返します。
いくつかのプロパティについてはこのあと簡単に解説します。
マルチページの基本的な使い方
マルチページの各ページには他のコントロールを設置することができます。
マルチページには複数のページが追加されていますが、それぞれのページ毎に異なるコントロールを設置することができます。下記では「Page2」の部分をクリックしてページ2に切り替えたあと、ページ1とは異なるコントロールを設置しています。
このようにマルチページではページ毎にまったく異なるコントロールを設置することができます。同じ目的で使用されるコントロールをまとめて同じページに設置し、別の目的で使用するコントロールは別のページに設置するといったことができます。
なおマルチページと似ているタブストリップでは、タブ毎にコントロールを変えるのではなく同じコントロールを使ってタブ毎に異なる値を表示するといった使い方をします。
マルチページにページを追加する
マルチページにページを追加する方法です。まず Visual Basic Editor の画面で行う方法を確認します。ユーザーフォームにマルチページを追加してください。
マルチページにはデフォルトでページは 2 つ追加されています。ページを追加するには、マルチページの中のページ名が表示されているあたりを右クリックし、表示されたメニューの中から「新しいページ」をクリックしてください。
マルチページにページが追加されました。
VBAを使ってマルチページにページを追加する
VBA を使ってプログラムの中からマルチページにページを追加する方法です。ページを追加するには MultiPage オブジェクトの Pages コレクションに対して Add メソッドを使います。
Set myPage = オブジェクト.Add([ Name [, Caption [, index ]]])
省略可能な 1 番目の引数に追加するページのオブジェクト名を指定します。同じく省略可能な 2 番目の引数にページに表示される文字列を指定します。同じく省略可能な 3 番目の引数に追加するページの位置を表すインデックスを指定します。省略した場合は最後に追加されます。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、マルチページにページを追加しています。
Option Explicit
Private Sub UserForm_Initialize()
MultiPage1.Pages.Add
End Sub
ユーザーフォームを表示すると、表示されたマルチページにページが追加されているのが確認できます。
マルチページのページに表示する文字列を設定する(Caption)
マルチページのページに表示する文字列を設定する方法ですです。まず Visual Basic Editor の画面で行う方法を確認します。変更するページの上で右クリックし、表示されたメニューの中から「名前の変更」をクリックしてください。
次のようなウィンドウが表示されるので「キャプション」の右にあるテキストボックスでページに表示される文字列を編集してください。編集が終わったら「OK」をクリックしてください。
ページに表示される文字列が変更されました。
VBAを使ってページに表示する文字列を設定する
VBA を使ってプログラムの中からページに表示される文字列を変更する方法です。マルチページに追加されているページのオブジェクトは、マルチページのオブジェクト名が MultiPage1 だった場合、それぞれ次のようにインデックスを指定して参照することができます。
MultiPage1.Pages(0) MultiPage1.Pages(1) MultiPage1.Pages(2)
最初のページのインデックスが 0 で、そのあとは順番に 1, 2, ... と続いていきます。
それぞれのページに表示される文字列を変更するには、参照したページの Caption プロパティに値を設定します。
オブジェクト.Caption [= String ]
ページに表示する文字列を代入してください。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、マルチページのページに表示する文字列を設定しています。
Option Explicit
Private Sub UserForm_Initialize()
MultiPage1.Pages(0).Caption = "連絡先"
MultiPage1.Pages(1).Caption = "資格"
End Sub
ユーザーフォームを表示すると、表示されたマルチページのページに設定した文字列が表示されているのが確認できます。
マルチページの表示位置を設定する(Top,Left)
マルチページが表示される位置を設定するには Top プロパティと Left プロパティに値を設定します。
オブジェクト.Top [= Single ] オブジェクト.Left [= Single ]
Top プロパティにはユーザーフォームの上端からマルチページの上端までの距離、 Left プロパティにはユーザーフォームの左端からマルチページの左端までの距離をそれぞれ単精度浮動小数点型の数値で代入します。単位はポイントです。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、マルチページの位置を設定しています。
Option Explicit
Private Sub UserForm_Initialize()
MultiPage1.Top = 40
MultiPage1.Left = 60
End Sub
ユーザーフォームを表示すると、表示されたマルチページが指定した位置で表示されているのが確認できます。
マルチページの幅と高さを設定する(Width,Height)
マルチページの幅と高さを設定するには幅については Width プロパティ、高さについては Height プロパティに値を設定します。
オブジェクト.Width [= Single ] オブジェクト.Height [= Single ]
幅および高さをあらわす単精度浮動小数点型の数値を代入してください。単位はポイントです。
具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、マルチページの幅と高さを設定しています。
Option Explicit
Private Sub UserForm_Initialize()
MultiPage1.Width = 160
MultiPage1.Height = 60
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()
MultiPage1.Font.Size = 14
MultiPage1.Font.Bold = True
MultiPage1.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()
MultiPage1.TabOrientation = fmTabOrientationRight
End Sub
ユーザーフォームを表示すると、マルチページの右側にページが表示されているのが確認できます。
なおマルチページの下側および左側にページが表示するように設定した場合は、それぞれ次のように表示されます。
マルチページのイベント一覧
マルチページで発生するイベント一覧は次の通りです。
AddControl BeforeDragOver BeforeDropOrPaste Change Click DblClick Enter Error Exit KeyDown KeyPress KeyUp Layout MouseDown MouseMove MouseUp RemoveControl Scroll Zoom
マルチページの既定のイベントは Change イベントです。
-- --
Excel のユーザーフォームで設置できるマルチページを VBA から使用する方法と、マルチページで設定可能なプロパティおよびイベントの一覧について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。