こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access 1つのイベントに複数のVBA

こんにちは!
Accessについて、質問です!!


あるフォームの『修正』というボタンのクリック時プロパティに、以下のVBAが組み込まれています。

Private Sub 修正_Click()
CopyRec
End Sub

ここに新たに、

『メッセージボックス』『ウインドウを閉じる』VBAを加えたいのです。
現状として……

(1)Private Sub 修正_Click()
CopyRec
MsgBox "修正が完了しました"
End Sub

(2)Option Compare Database
(下線)
Private Sub 修正_Click()
CopyRec
End Sub

Option Compare Database
(下線)
MsgBox "修正が完了しました"
End Sub

上記(1)(2)は、失敗しています。
質問は2つあります。

(1)1つのプロパティに、複数のVBAを設定するのは可能ですか?可能なら、どのようにVBAを入力すれば正常作動するのでしょうか?
(2)『ウインドウを閉じる』VBAの書き方が調べても分かりませんでした……。どのように入力するのですか?


どちらか1つが分かる方でもかまいません。
回答よろしくお願いします!

投稿日時 - 2013-12-11 15:28:34

QNo.8382206

すぐに回答ほしいです

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

No2のIf文はこの形ではなく、単に

Private Sub 修正_Click()
CopyRec
MsgBox("修正が完了しました。フォームを閉じます。")
DoCmd.Close acForm, Me.Name
End Sub

のように、コードを羅列しても同じなので
どちらでもいいです。
一応、No1とNo2はIf文を使った例です、ということに
します。

投稿日時 - 2013-12-11 19:17:16

お礼

複数のパターンのVBAをご教授いただき、ありがとうございます!
試したところ、正常作動しました♪
今回ベストアンサーにしたこちらを採用しましたが、No.1とNo.2も今後の参考にさせていただきます。

回答、ありがとうございます!

投稿日時 - 2013-12-12 12:03:39

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

失礼しました。考えてみれば、CopyRec が先にあるので、
Yes/NoでするとNoだと  CopyRec をまたすることになるので
NGですね。

以下のようにしてみてください。


Private Sub 修正_Click()
CopyRec
If MsgBox("修正が完了しました。フォームを閉じます。") = vbOK Then
DoCmd.Close acForm, Me.Name
End If
End Sub

投稿日時 - 2013-12-11 19:05:11

ANo.1

要するに、
「修正が終わったので、このフォームを
閉じますよ、よろしいですか?」
というようなことでしょうか。
YESならば閉じるというコードを、というのであれば、

Private Sub 修正_Click()
Dim ret As Integer
CopyRec
ret = MsgBox("修正が完了しました。フォームを閉じます。よろしいでしょうか?", vbYesNo + vbQuestion + vbDefaultButton1, "お知らせ")
If ret = vbYes Then
DoCmd.Close acForm, Me.Name
End If
End Sub

では?

投稿日時 - 2013-12-11 15:53:54

補足

説明不足、失礼しました;
実を言うと、私の希望としては、

メッセージボックス
タイトル:修正完了
メッセージ:修正が完了しました
ボタン:『OK』のみ

で、OKクリックと同時にフォームを閉じる形にしたいのです。
pirorin654さんのVBAも参考に、設定してみます。
回答ありがとうございます!

投稿日時 - 2013-12-11 17:13:04

あなたにオススメの質問