Excel VBA スクロールバーで値を取得する

スポンサーリンク

スクロールバーで値を取得する方法

スクロールバーはスクロール操作によって、特定の範囲内で値を増減させてその値を取得することができます。

スクロールボックスのドラッグ操作で値を大幅に増減できることから、比較的広い範囲の値を増減させたいときに有効なコントロールといえます。

なお、比較的狭い範囲で値を増減させて取得する場合はスピンボタンが便利です。

スクロールバーコントロールの各部の名称


Min【ミニ】プロパティ

Max【マックス】プロパティ

スクロールバーの最小値と最大値を設定するには、Min【ミニ】プロパティとMax【マックス】プロパティを使用します。

これらの値を設定することで、特定の範囲内で値が増減されるようにスクロールバーを設定できます。

Min【ミニ】、Max【マックス】プロパティの書式と設定値の説明

オブジェクト.Min = 設定値
オブジェクト.Max = 設定値

  • オブジェクト(必須)
    対象となるスクロールバーのオブジェクト名を設定します。
  • 設定値(必須)
    Minプロパティにはスクロールバーの最小値を設定、Maxプロパティにはスクロールバーの最大値を設定します。いずれも長整数型(Long)の値を使用します。長整数型の範囲である-2,147,483,648~2,147,483,648を超えた値を設定するとエラーになります。

※コードは通常、ユーザーフォームが読み込まれる直前に実行されるユーザーフォームの
Initialize【イニシャライズ】イベントプロシージャー内に記述します。


Value【バリュー】プロパティ

スクロールバーの現在の位置の値を取得または、設定するにはスクロールバーコントロールオブジェクトのValue【バリュー】プロパティを使用します。

Value【バリュー】プロパティの書式と設定値の説明

【取得】
オブジェクト.Value
【設定】
オブジェクト.Value = 設定値

  • オブジェクト(必須)
    対象となるスクロールバーコントロールオブジェクトのオブジェクト名を設定します。
  • 設定値(必須)
    スクロールボックスの表示位置を設定する場合にMin、Maxプロパティで設定した範囲の値を設定します。

※スクロールバーには、現在のスクロールバーの位置を表す数値を表示する機能がないので、現在のスクロールバーの位置を表すデータをValue【バリュー】プロパティで取得して、ラベルコントロールなどを使用して表示させる必要があります。コードを記述する場所は、スクロールバーのValueプロパティが変更されたときに発生する、スクロールバーコントロールの
Change【チェンジ】イベントプロシージャーに記述します。


スクロールバーを使用して色を設定するRGB関数の値を取得する例

実行後イメージ

ユーザフォームに設置する各コントロール


スクロールバーコントロールの初期設定コードと解説

Private Sub UserForm_Initialize()
Label1.Caption = ""
Label2.Caption = ""
Label3.Caption = ""
ScrollBar1.Min = 0
ScrollBar1.Max = 255
ScrollBar2.Min = 0
ScrollBar2.Max = 255
ScrollBar3.Min = 0
ScrollBar3.Max = 255
End Sub
1行目【Private Sub UserForm_Initialize()】
ユーザーフォームが表示される直前に実行されるInitialize【イニシャライズ】イベントプロシージャーにコードを記述します。


2行目~4行目【Label1.Caption = “”
Label2.Caption = “”
Label3.Caption = “”】

ラベルコントロールのCaption【キャプション】プロパティに空文字を設定します。


5行目~10行目【ScrollBar1.Min = 0
ScrollBar1.Max = 255
ScrollBar2.Min = 0
ScrollBar2.Max = 255
ScrollBar3.Min = 0
ScrollBar3.Max = 255】

スクロールバーオブジェクトのMin、Maxプロパティを使用して各スクロールバーに最小値と最大値を設定します。最大値はRGB値の最大値の255を設定します。


スクロールバーの値をラベルコントロールに表示するコード例

Private Sub ScrollBar1_Change()
Label1.Caption = "R値:" & ScrollBar1.Value
End Sub
Private Sub ScrollBar2_Change()
Label2.Caption = "G値:" & ScrollBar2.Value
End Sub
Private Sub ScrollBar3_Change()
Label3.Caption = "B値:" & ScrollBar3.Value
End Sub

コードの解説

各スクロールバーコントロールのValue【バリュー】プロパティが変更されたときに発生する
Change【チェンジ】イベントプロシージャーに各スクロールバーの値をValue【バリュー】プロパティで取得して、各ラベルオブジェクトのCaption【キャプション】に代入します。


各スクロールバーの値をRGB値としてテキストボックスにその色を表示するコードと解説

Private Sub CommandButton1_Click()
Dim R As Integer
Dim G As Integer
Dim B As Integer
R = ScrollBar1.Value
G = ScrollBar2.Value
B = ScrollBar3.Value
TextBox1.BackColor = RGB(R, G, B)
End Sub
1行目【Private Sub CommandButton1_Click()】
コマンドボタンがクリックされたときに発生するコマンドボタンコントロールオブジェクトのClich【クリック】イベントプロシージャーにコードを記述します。


2行目~4行目【Dim R As Integer
Dim G As Integer
Dim B As Integer】

RGB値として使用する値を格納する変数を整数型(Integer)で宣言します。


5行目~7行目【R = ScrollBar1.Value
G = ScrollBar2.Value
B = ScrollBar3.Value】

スクロールバーコントロールオブジェクトのValue【バリュー】プロパティで各スクロールバーの値を取得し、各変数に代入します。


8行目【TextBox1.BackColor = RGB(R, G, B)】
テキストボックスコントロールオブジェクトのバックカラーを表す、BackColor【バックカラー】プロパティにRGB関数で値に各変数をあててテキストボックスコントロールオブジェクトのバックカラーを変更します。


以上で、スクロールバーで値を取得する方法についての解説を終了します。
ありがとうございました。

スクロールバーコントロールオブジェクトのその他のプロパティについては
スクロールバーのプロパティ」をご覧ください。
スクロールバーコントロールオブジェクトのその他のイベントについては
スクロールバーのイベント」をご覧ください。

スポンサーリンク

関連記事・広告