| 
    
     |  | BB さん、こんばんわ。 >エクセルVBAのユーザーフォーム上にテキストボックスとスピンボタンを設置し、値のループをさせるべく奮闘しているのですが上手くいきません。
 >どなたか教えてくださいませm(__)m
 >
 >
 >最小値:1
 >最大値:3000
 >
 >これを、スピンボタンを押すたびに
 >1→2→(中略)→2999→3000→1→2・・・
 >となるようにしたいのです。
 
 SpinUp/SpinDownイベントで、SpinButtonの値とTextBoxの値を比較しながら、ループするように変化させます。
 
 'UserFormに全て記述/////////////////////////////////////
 'パラメータの設定はここで。
 Private Sub UserForm_Initialize()
 TextBox1.TextAlign = fmTextAlignRight
 '
 With SpinButton1
 .Max = 3000
 .Min = 1
 TextBox1.Value = .Value
 End With
 End Sub
 'TextBox1に直接値を入れる場合に対応
 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 Dim a As Integer
 'TextBox1に直接値を入れる場合
 With SpinButton1
 If IsNumeric(TextBox1.Value) Then
 Select Case TextBox1.Value
 Case Is <= .Min: TextBox1.Value = .Min
 Case Is >= .Max: TextBox1.Value = .Max
 End Select
 Else
 TextBox1.Value = .Value '元の値
 End If
 .Value = TextBox1.Value
 End With
 End Sub
 '▲をクリック
 Private Sub SpinButton1_SpinUp()
 'TextBoxの値が既に上限に達していたら下限に
 With SpinButton1
 If TextBox1.Value = .Max Then .Value = .Min
 TextBox1.Value = .Value
 End With
 End Sub
 '▼をクリック
 Private Sub SpinButton1_SpinDown()
 'TextBoxの値が既に下限に(略
 With SpinButton1
 If TextBox1.Value = .Min Then .Value = .Max
 TextBox1.Value = .Value
 End With
 End Sub
 
 こんな感じです。
 
 |  |