|
>>お教え願いたいのですが、
>>例えば、スピンボタンとテキストボックスが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個 ------(Spinbutton1〜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
>
>確認してみて下さい。
>
>
>クラスモジュールのポピュラーな用途です。
|
|