- ベストアンサー
vbaについて。
お世話になっております。 AccessVBAの初心者です。 subプロシージャのボタンクリックイベントから共通モジュール(Public)の動作を呼び、変数の加減乗除の計算をさせたいです。 共通モジュールの中をif文にする時、if「(subプロシージャの)ボタンが押された」時という記述はどのようにすれば良いでしょうか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そういう「書き方」は出来ません。 なので「共通モジュールは、ボタンクリックイベントのsubプロシージャからしか呼ばない」という決まりを作り、その通りに書くしかありません。 「共通モジュールは、ボタンクリックイベントのsubプロシージャからしか呼ばない」という決まりを作れば「共通モジュールが呼ばれた時は、絶対にボタンがクリックされた時だけに限られる」ので「if文で判定する必要なんか無い」です。 なお「複数のボタンのイベントから、共通のモジュールを呼び出す」というのなら「引数に、誰から呼ばれたのか、指定すれば良いだけ」です。 例えば、以下のようにします。 Private Sub 足すボタン_Click() 共通演算(1) End Sub Private Sub 引くボタン_Click() 共通演算(2) End Sub Private Sub 掛けるボタン_Click() 共通演算(3) End Sub Private Sub 割るボタン_Click() 共通演算(4) End Sub Public sub 共通演算(計算モード As Integer) If 計算モード=1 Then ’足し算の処理 Else If 計算モード=2 Then ’引き算の処理 Else If 計算モード=3 Then ’掛け算の処理 Else If 計算モード=4 Then ’割り算の処理 Else MsgBox ”計算モードが誤っています" End If End Sub
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1719/2589)
それぞれのボタンクリックプロシージャに共通モジュール(Public)にボタンを判別する引数を渡し呼び出してやればその引数でどのボタンが押されたか判断するとか sub Aボタンクリック() 共通モジュール(Aボタン) end sub sub 共通モジュール(ボタン判別) if ボタン判別 したい事 end if end sub みたいな感じではいかがですか。