Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4274 / 13646 ツリー ←次へ | 前へ→

【57524】エクセルVBAでスピンボタンのループ機能を使うには BB 08/8/29(金) 0:41 質問[未読]
【57525】Re:エクセルVBAでスピンボタンのループ機能... りん 08/8/29(金) 2:48 回答[未読]
【57559】Re:エクセルVBAでスピンボタンのループ機能... BB 08/9/2(火) 20:18 お礼[未読]

【57524】エクセルVBAでスピンボタンのループ機能...
質問  BB  - 08/8/29(金) 0:41 -

引用なし
パスワード
   夜分に失礼いたします。現在エクセルVBAで作成中のものです。
エクセルVBAのユーザーフォーム上にテキストボックスとスピンボタンを設置し、値のループをさせるべく奮闘しているのですが上手くいきません。
どなたか教えてくださいませm(__)m


最小値:1
最大値:3000

これを、スピンボタンを押すたびに
1→2→(中略)→2999→3000→1→2・・・
となるようにしたいのです。

以下、コードです。

Private Sub SpinButton1_Change()
  With SpinButton1
  TextBox1.Value = SpinButton1.Value

  SpinButton1.Max = 1
  SpinButton1.Min = 3000
    If .Min >= .Max Then
    .Value = .Max
    ElseIf .Max <= .Min Then
    .Value = .Min
    TextBox1.Value = .Value * 1
    Exit Sub
     End If
  End With
 
End Sub

何とかここまで出来ましたが、ループのところが分からず苦戦しています。
どなたか教えてくださいm(__)mお願いします

【57525】Re:エクセルVBAでスピンボタンのループ機...
回答  りん E-MAIL  - 08/8/29(金) 2:48 -

引用なし
パスワード
   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

こんな感じです。

【57559】Re:エクセルVBAでスピンボタンのループ機...
お礼  BB  - 08/9/2(火) 20:18 -

引用なし
パスワード
   報告が遅れてしまい、誠に申し訳ありません。

りん さん、ありがとうございます。おかげさまでスムーズに動くようになりました。

本当にありがとうございます。

4274 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free