教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】スピンボタンとテキストボックスを連動させる方法を教えて!

構文

構文は以下の通りです。

Private Sub SpinButton1_Change()
    ' スピンボタンが変更された時の処理
    TextBox1.Value = SpinButton1.Value
End Sub

解説

スピンボタンがクリックされてValueプロパティの値が変わると、Changeイベントが発生します。Changeイベントが発生した時に実行されるChangeイベントプロシージャを使用すると、「スピンボタンがクリックされた時にスピンボタンの値を表示しているテキストボックスの表示を変更する」といった処理を実行できます。

使い方

具体的な使い方を紹介します。

(例1)金額の入力

Private Sub SpinButton1_Change()
    TextBox1.Value = Format(SpinButton1.Value, "Currency")
End Sub

この例では、スピンボタンの値が変更されるたびに、関連するテキストボックスに金額形式で表示するようにしています。Format 関数を使用して、数値を通貨形式に変換して表示します。

(例2)色の選択

Private Sub SpinButton1_Change()
    Dim colorIndex As Integer
    colorIndex = SpinButton1.Value
    TextBox1.BackColor = RGB(255, 0, colorIndex)
End Sub

この例では、スピンボタンの値に基づいてRGBカラーコードを生成し、テキストボックスの背景色として設定しています。ユーザーがスピンボタンを回すことで、異なる色を選択できます。

プログラミング例

以下に、プログラミング例を紹介します。

' 例1: 最小値と最大値の設定
Private Sub UserForm_Initialize()
    SpinButton1.Min = 1   ' 最小値の設定
    SpinButton1.Max = 100 ' 最大値の設定
End Sub

' 例2: イベントハンドラの拡張
Private Sub SpinButton1_SpinUp()
    ' スピンアップ時の処理
    TextBox1.Value = SpinButton1.Value
End Sub
Private Sub SpinButton1_SpinDown()
    ' スピンダウン時の処理
    TextBox1.Value = SpinButton1.Value
End Sub

まとめ

スピンボタンの現在の値を取得するには、Valueプロパティを使用します。↑ボタンがクリックされると、設定されている値分だけValueプロパティの値が増加します。↓ボタンがクリックされると、設定されている値分だけValueプロパティの値が減少します。是非活用してください。