ここから本文です

続) VBAの質問です。 .

tae********さん

2009/8/3115:54:58

続) VBAの質問です。

.

前回「Userformの同じボタンの処理を一つにまとめることは出来ないか」ということでこちらで質問させていただきました。

前回URL→http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1430059019

前回は、SpinbuttonとTextboxをまとめる方法でしたが、こちらは無事に解決することが出来ました。
回答してくださった方々ありがとうございました。(今回の件が解決しましたら、そちらも解決済みにしますのでお待ちください。)

あと一つ最後に、今回はOptionbuttonをまとめようと思い同じ要領で試したのですがうまくいきません。おそらくまだ仕組み(意味)を十分に理解できてないからだと思います。

以下が作成したコードです。(Userform1,Class1を使用)
「○→動作確認 △→これでいいと思うが自信がない ×エラーもしくは完全にわからない部分」です。

。。。。。。。。。。。。。。
[Userform1] Spinbutton(2個)、Textbox(2個)、Optionbutton(2個)の場合

Private spin(1 To 2) As New Class1 '○
Private txt(1 To 2) As New Class1 '○
Private opt(1 To 2) As New Class1 '△
Private Sub UserForm_Initialize()
For i = 1 To 2
Set spin(i).spin = Controls("spinbutton" & i) '○
Set spin(i).txt = Controls("textbox" & i) '○
Set opt(i) = Controls("optionbutton" & i) '×
Next
End Sub

。。。。。。。。。。。。。。。。。。。。
[Class1]

Public txt As msforms.TextBox '○テキストボックス
Public WithEvents spin As msforms.SpinButton '○スピンボタン
Public WithEvents Option As msforms.OptionButton '×オプションボタン
Private Sub spin_Change() '○
txt = spin '○
End Sub
Private Sub Option_Click() '△
'処理
End Sub


今まではクラスモジュールという存在は知っていましたが、実際にこのように使うものとは知りませんでした。

どなたか悪い部分を指摘していただければ幸いです。また、前回回答してくださったお二方、今回もどうぞよろしくお願いします。

閲覧数:
477
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

rut********さん

2009/9/112:58:14

1.Set opt(i).opt = Controls("optionbutton" & i) '×
2.Public WithEvents opt As msforms.OptionButton '×オプションボタン
3.Private Sub Opt_Click() '△

この3箇所の修正で上記のコードでも動くと思います。

質問した人からのコメント

2009/9/2 18:21:59

成功 ruta_aj0103さん どちらかをBAに選ばなくてはならずずいぶん悩みました。2つの質問にはどちらの方もお答えいただきましたので、どちらかお一人だけに×を付けるのは到底耐え難いものがありました。そこで今回はお一つずつBAにさせていただくことにしました。こちらの質問では私の書き方にコードを合わせて書いていただいたruta_aj0103さんをBAにさせていただきます。本当にありがとうございました。今後ともよろしくお願いします。

ベストアンサー以外の回答

1〜1件/1件中

末 弘之さん

編集あり2009/8/3119:54:41

次のようなコードではいかがでしょうか、optionbuttonのオブジェクト名は「opt」で統一しています
あなたのコードでは「 Option 」などが混っていましたので

'UserForm上に

Private sample(1 To 3) As New Class1

Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 3
With sample(i)
.id = i
Set .spin = Controls("spin" & i)
Set .txt = Controls("txt" & i)
Set .opt = Controls("opt" & i)
End With
Next i
End Sub


'これから下Class1モジュールに

Public txt As msforms.TextBox
Public WithEvents spin As msforms.SpinButton
Public WithEvents opt As msforms.OptionButton '×オプションボタン

Public id As Long
Private Sub spin_Change()
txt.Text = spin.Value
End Sub
Sub opt_change()
MsgBox opt.Name
End Sub


※このことは理解してあると思いますがこのコードではspinbuttonのオブジェクト名は「spin*」に
textbox名は「txt*」に、optionbuttonは「opt*」という設定で書いています

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる