|
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
こんな感じです。
|
|