Excel VBA質問箱 IV

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

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


66396 / 76734 ←次へ | 前へ→

【14902】Re:同機能の複数イベントプロシージャをまとめて記述したい
回答  ichinose  - 04/6/9(水) 18:36 -

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

【14898】同機能の複数イベントプロシージャをまとめて記述したい なおき 04/6/9(水) 16:58 質問
【14901】Re:同機能の複数イベントプロシージャをま... ichinose 04/6/9(水) 18:32 回答
【14902】Re:同機能の複数イベントプロシージャをま... ichinose 04/6/9(水) 18:36 回答
【14905】Re:同機能の複数イベントプロシージャをま... なおき 04/6/9(水) 21:21 お礼

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