• ベストアンサー

ユーザーフォームから

お世話になります。 ユーザーフォームにて、 オプションボタンでどれかを選択出来るようにし、 コマンドボタンで決定する様にしてあります。 選択した内容によりcallで別の標準モジュールに あるsubプロシージャに飛ばしたいのですが、 その記述方法が分かりません。 良くByvalの記述方法は見つかるのですが、 単純にsubプロシージャを実行したいだけなのです。 フォームの中に記述しても良いのですが、結構長くなって しまうので・・。 こういうやり方はおかしいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

オプションボタンが3つあり、 オプションボタン1 で サブルーチンのTest1 オプションボタン2 で サブルーチンのTest2 オプションボタン3 で サブルーチンのTest3 を実行する場合のサンプル2つほど。 '---------その1 ------------------ Private Sub CommandButton1_Click()   Select Case True     Case OptionButton1.Value       Call Test1     Case OptionButton2.Value       Call Test2     Case OptionButton3.Value       Call Test3     Case Else       MsgBox "選択なし"   End Select End Sub '---------- その2 -------------------- Private Sub CommandButton1_Click()   If OptionButton1.Value Then     Call Test1   ElseIf OptionButton2.Value Then     Call Test2   ElseIf OptionButton3.Value Then     Call Test3   Else     MsgBox "選択なし"   End If End Sub '----------------------------------------- 以上。  

miruchoko
質問者

お礼

サンプルを2つも頂き誠にありがとうございます。 大変参考になりました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

バージョンが明示されていないのでVB6あたりとして。 > こういうやり方はおかしいのでしょうか。 フォームはインターフェイスだけ、実行部は標準モジュールに記述、は 私的には正しいと思います。 コマンドボタンのクリックイベントに記述すれば良いと思いますよ。 sub cmd実行_Click()   '---------------------------   '実行ボタンがクリックされた   '---------------------------   Dim str実行年月日 As String   '実行に必要な条件を判断する。   str実行年月日 = txt対象年月日.Text   if IsDate(str実行年月日) = False then     MsgBox "実行年月日が不正です"     Exit Sub   end if   '実行部を呼び出す   Call プロシージャ名(str実行年月日) end sub 見たいな感じ

miruchoko
質問者

お礼

早速のご回答ありがとうございます。 参考になりました。