コントロールでスクロールバーを表示するか設定する(ScrollBarsプロパティ)

ユーザーフォームに設置したテキストボックスなどで必要な場合にスクロールバーを表示するかどうか設定するには ScrollBars プロパティを使用します。ここでは Excel のユーザーフォームで ScrollBars プロパティを使ってコントロールでスクロールバーを表示するか設定する方法について解説します。

(Last modified: )

スクロールバーを表示する

ユーザーフォームに設置したコントロールでスクロールバーを表示するかどうかはを設定するには ScrollBars プロパティを使用します。デフォルトでは ScrollBars の値は「0 - fmScrollBarsNone」となっています。この値の場合はスクロールバーを表示しません。

スクロールバーを表示する(1)

例えば複数行が表示できるようになっているテキストボックスで、テキストボックスのサイズに入りきらないほどのテキストを入力してもスクロールバーは表示されません。

スクロールバーを表示する(2)

設定可能な値には次の種類があります。

定数説明
fmScrollBarsNone0スクロールバーを表示しない
fmScrollBarsHorizontal1水平スクロールバーを表示する
fmScrollBarsVertical2垂直スクロールバーを表示する
fmScrollBarsBoth3水平と垂直の両方のスクロールバーを表示する

コントロールに対するスクロールバーの設定を変更するには ScrollBars プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし設定する項目をクリックしてください。

スクロールバーを表示する(3)

例えば ScrollBars プロパティの値として fmScrollBarsVertical (または fmScrollBarsBoth) を設定し垂直スクロールバーが表示されるように設定してみます。

スクロールバーを表示する(4)

ユーザーフォームを実際に表示して先ほど設定を行ったテキストボックスの高さに入りきらない量のテキストを入力してみると、垂直スクロールバーが表示されるのが確認できます。

スクロールバーを表示する(5)

このように ScrollBars プロパティの値を変更することで、スクロールバーを表示するかどうかの設定を行うことができます。なおスクロールバーは必要になったときだけ表示されます。

水平スクロールバー

テキストボックスなどで WordWrap プロパティに「False」を設定すると入力したテキストが行末で自動で折り返しされなくなります。

スクロールバーを表示する(6)

ScrollBars プロパティの値として fmScrollBarsHorizontal または fmScrollBarsBoth を設定すると、 1 行に入りきらないテキストを入力したときに水平スクロールバーが表示されます。

スクロールバーを表示する(7)

VBAのプログラムの中でScrollBarsプロパティを設定する

プロパティウィンドウを使って ScrollBars プロパティの値を変更する代わりに、 VBA のコードを記述して ScrollBars プロパティの値を変更することもできます。

プログラムの中で ScrollBars プロパティを設定する場合は次の書式を使用します。

オブジェクト.ScrollBars [= fmScrollBars ]

対象のオブジェクトの ScrollBars プロパティに対してスクロールバーを表示するかどうかを表す値を代入します。代入可能な値はこのページの最初の方に記載してありますので参照されてください。

例えば垂直のスクロールバーだけを表示する場合は fmScrollBarsVertical を設定してください。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で ScrollBars プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でScrollBarsプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でScrollBarsプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    TextBox1.ScrollBars = fmScrollBarsVertical
    TextBox1.MultiLine = True
End Sub

VBAのプログラムの中でScrollBarsプロパティを設定する(3)

垂直スクロールバーが表示されるように ScrollBars プロパティに fmScrollBarsVertical を設定しました。( MultiLine プロパティの値が「True」でないと複数行のテキストを入力できないのであわせて設定しています)。

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でScrollBarsプロパティを設定する(4)

ユーザーフォームが表示されました。テキストボックスに入りきらない行のテキストを入力すると垂直スクロールバーが表示されました。

VBAのプログラムの中でScrollBarsプロパティを設定する(5)

VBAのプログラムの中でScrollBarsプロパティを設定する(6)

このように VBA のプログラムの中で ScrollBars プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで ScrollBars プロパティを使ってコントロールでスクロールバーを表示するか設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。