Form オブジェクトの戻り値の設定
はじめまして。Porome です。
Excel 2003 の VBA を使ってプログラミングをしています。
Form オブジェクトの戻り値の設定方法/受取方法について教えてください。
実装したいプログラムの概要は、以下の通りです。
標準モジュールに記載したサブルーチンから Form オブジェクトを
生成し、Form オブジェクトで入力されたデータを標準モジュール側
で取得する…というものです。
書きたいソースコードのイメージは以下の通りです。
Sub MySub1()
dim i_Form As New MyForm1
dim i_Name As String
dim i_Age As String
dim i_Ret As Integer
'MyForm1OK, MyForm1Cancel が戻ってくるまで、じっと待つ
i_Ret = i_Form.Show, vbModal
Select Case i_Ret
'MyForm1 で OK ボタンが押された
Case MyForm1OK:
i_Name = i_Form1.txtName.Value
i_Age = i_Form1.txtAge.Value
MsgBox(i_Name & " さんの年齢は " & i_Age & " 歳です")
'MyForm1 で Cancel ボタンが押された
Case MyForm1Cancel:
MsgBox("処理はキャンセルされました")
'MyForm1 では、MyForm1 では、MyForm1OK, MyForm1Cancel 以外は
'戻さない仕様とします。
Case Else
'何もしない(ここには来てはいけない)
End Select
End Sub
こういったことを実現するためには
・MyForm1 では、
OK ボタンを押したら、MyForm1OK を Show メソッドの戻り値として
セットし、処理を MySub1 に戻す
Cancel ボタンを押したら、MyForm1Cancel を Show メソッドの戻り値としてセットし、処理を MySub1 に戻す
OK ボタン、Cancel ボタン Click 以外の Form イベントでは、MyForm1 での処理が継続され、MySub1 は MyForm1 の戻り値(MyForm1OK/MyForm1Cancel)を、じっと待つ
といったことが必要になってくるかと思います。
こういった処理を実装するには、呼び出し元 (MySub1)、呼び出し先 (MyForm1) では、それぞれどのようなコードを記載すればよろしいでしょうか?
説明が下手で申し訳ありませんが、アドバイスをお願いいたします
お礼
参考になりました。 有難うございます。