コントロールでスクロールバーを表示するか設定する(ScrollBarsプロパティ)
ユーザーフォームに設置したテキストボックスなどで必要な場合にスクロールバーを表示するかどうか設定するには ScrollBars プロパティを使用します。ここでは Excel のユーザーフォームで ScrollBars プロパティを使ってコントロールでスクロールバーを表示するか設定する方法について解説します。
(Last modified: )
スクロールバーを表示する
ユーザーフォームに設置したコントロールでスクロールバーを表示するかどうかはを設定するには ScrollBars プロパティを使用します。デフォルトでは ScrollBars の値は「0 - fmScrollBarsNone」となっています。この値の場合はスクロールバーを表示しません。
例えば複数行が表示できるようになっているテキストボックスで、テキストボックスのサイズに入りきらないほどのテキストを入力してもスクロールバーは表示されません。
設定可能な値には次の種類があります。
| 定数 | 値 | 説明 |
|---|---|---|
| fmScrollBarsNone | 0 | スクロールバーを表示しない |
| fmScrollBarsHorizontal | 1 | 水平スクロールバーを表示する |
| fmScrollBarsVertical | 2 | 垂直スクロールバーを表示する |
| fmScrollBarsBoth | 3 | 水平と垂直の両方のスクロールバーを表示する |
コントロールに対するスクロールバーの設定を変更するには ScrollBars プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし設定する項目をクリックしてください。
例えば ScrollBars プロパティの値として fmScrollBarsVertical (または fmScrollBarsBoth) を設定し垂直スクロールバーが表示されるように設定してみます。
ユーザーフォームを実際に表示して先ほど設定を行ったテキストボックスの高さに入りきらない量のテキストを入力してみると、垂直スクロールバーが表示されるのが確認できます。
このように ScrollBars プロパティの値を変更することで、スクロールバーを表示するかどうかの設定を行うことができます。なおスクロールバーは必要になったときだけ表示されます。
水平スクロールバー
テキストボックスなどで WordWrap プロパティに「False」を設定すると入力したテキストが行末で自動で折り返しされなくなります。
ScrollBars プロパティの値として fmScrollBarsHorizontal または fmScrollBarsBoth を設定すると、 1 行に入りきらないテキストを入力したときに水平スクロールバーが表示されます。
VBAのプログラムの中でScrollBarsプロパティを設定する
プロパティウィンドウを使って ScrollBars プロパティの値を変更する代わりに、 VBA のコードを記述して ScrollBars プロパティの値を変更することもできます。
プログラムの中で ScrollBars プロパティを設定する場合は次の書式を使用します。
オブジェクト.ScrollBars [= fmScrollBars ]
対象のオブジェクトの ScrollBars プロパティに対してスクロールバーを表示するかどうかを表す値を代入します。代入可能な値はこのページの最初の方に記載してありますので参照されてください。
例えば垂直のスクロールバーだけを表示する場合は fmScrollBarsVertical を設定してください。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で ScrollBars プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。
Private Sub UserForm_Initialize()
TextBox1.ScrollBars = fmScrollBarsVertical
TextBox1.MultiLine = True
End Sub
垂直スクロールバーが表示されるように ScrollBars プロパティに fmScrollBarsVertical を設定しました。( MultiLine プロパティの値が「True」でないと複数行のテキストを入力できないのであわせて設定しています)。
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。テキストボックスに入りきらない行のテキストを入力すると垂直スクロールバーが表示されました。
このように VBA のプログラムの中で ScrollBars プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで ScrollBars プロパティを使ってコントロールでスクロールバーを表示するか設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。