| 
    
     |  | ▼なおき さん: こんばんは。
 
 >お教え願いたいのですが、
 >例えば、スピンボタンとテキストボックスが1セットで、
 >スピンボタンを操作すると、対のテキストボックスに
 >値が反映される、さらにシート上のセルに代入するような
 >イベントプロシージャを作成したとします。
 >下記のような感じでしょうか。
 >
 >Private Sub SpinButton1_Change()
 >  TextBox1.Text = SpinButton1.Value
 >  Cells(10, 20).Value = TextBox1.Text
 >End Sub
 >
 >このセットが同一UserForm上に、仮に100個あり、個別に
 >動作させる場合、簡略して記述する方法はないのでしょうか。
 >(値を代入するセルの位置は、セットによって変わります)
 スピンボタンのChangeイベントなら、クラスモジュールを使用すると
 可能です。
 100個のセットではテストが大変だったので3個のセットにしてみました。
 
 ユーザーフォーム(Userform1)には
 テキストボックスが3個-----(Textbox1〜Textbox3)
 スピンボタン3個   ------(Spinbutoon1〜Spinbutton3)
 
 クラスモジュールを挿入して下さい(既定名のClass1をそのまま使います)
 クラスモジュールのコードは、
 '=============================================================
 Public txt As msforms.TextBox
 Public WithEvents spin As msforms.SpinButton
 Public id As Long
 Private Sub spin_Change()
 txt.Text = spin.Value
 Cells(id, 20).Value = txt.Text
 '   ↑これは、仕様が分からないのでアレンジしました。
 '   idの値を見て、個別の処理も記述できます。
 End Sub
 
 で、Userform1のモジュールには、
 '===================================================================
 Private sample(1 To 3) As New Class1
 '          ↑100の場合は、100にする
 Private Sub UserForm_Initialize()
 For idx = 1 To 3 '←ここも100回ループ
 
 With sample(idx)
 .id = idx
 Set .spin = Controls("spinbutton" & idx)
 Set .txt = Controls("textbox" & idx)
 End With
 Next idx
 End Sub
 
 確認してみて下さい。
 
 
 クラスモジュールのポピュラーな用途です。
 
 
 |  |