• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS2000 ボタンメッセージについて)

ACCESS2000 ボタンメッセージについて

このQ&Aのポイント
  • ACCESS2000を使用しており、フォームのボタンを押すとレポートが開くようになっています。しかし、フォームのフィールド「終了日」がうるう年の2/28だった場合に、ボタンを押した時に警告のメッセージが出るようにしたいです。
  • 現在、終了日を更新した時にメッセージが出るようにしていますが、ボタンの方でも同様のチェックを行いたいです。
  • マウスボタン解放時のイベントに警告メッセージのコードを入れたところ、エラーが発生しました。具体的には、実行時エラー'2185'が発生しました。どこを修正すれば良いか教えてください。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

http://www.accessclub.jp/property/event/Click.html 上記にボタンをクリックするときのイベント順序が かいてあります。つまり、 MouseDown ⇒ MouseUp ⇒ Click ⇒ DblClick ⇒ MouseUp ⇒ Click の順序で起りますから、MouseUp ⇒ Click なので、 先にMouseUpが拾われてClickイベントが無視されてしまいます。 したがって、No2のような方法か、あるいは、 Call Ctl_新_証書新規_Click をマクロの呼び出しのかわりに入れます。以下のように。 Private Sub Ctl_新_証書新規_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Const cMsg = "うるう年ですけど、2/29じゃなくて大丈夫ですか?" Me.終了日.SetFocus If Format(Me.終了日.Text, "mdd") = "228" And _ IsLeapYear(Year(Me.終了日.Text)) Then If MsgBox(cMsg, vbYesNo) = vbNo Then Exit Sub Else MsgBox "レポートを開きます" Call Ctl_新_証書新規_Click End If End If End Sub

du-sama
質問者

お礼

解決しました。ありがとうございます! マクロを呼び出すというのがヒントとなりました。 ボタンを押してレポートを開くマクロの中に、”終了日にフォーカスを移動する”を追加し、 終了日の方はフォーカス喪失時にセットしたらうまくいきました。 基本的にうるう年なのに2/28になることは”ほぼ”ありえないので、この挙動で大丈夫でした。 ありがとうございました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

以下ではどうですか。 Private Sub Ctl_新_証書新規_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Const cMsg = "うるう年ですけど、2/29じゃなくて大丈夫ですか?" Me.終了日.SetFocus If Format(Me.終了日.Text, "mdd") = "228" And _ IsLeapYear(Year(Me.終了日.Text)) Then If MsgBox(cMsg, vbYesNo) = vbNo Then Exit Sub Else MsgBox "レポートを開きます" 'ここにレポートを開くマクロ名を記述 End If End If End Sub

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>コントロールがフォーカスを取得していない時に、 >コントロールのプロパティまたはメソッドを参照することはできません。 ならば、フォーカスを移せばいいのでは。 Me.終了日.SetFocus If Format(Me.終了日.Text, "mdd") = "228" And _ それから、 >Cancel = True これはエラーが出ます。プロシージャの引数にCancelが 設定されていません。変数扱いになります。変数宣言も されていないのでエラーが出る、ということになります。 If MsgBox(cMsg, vbYesNo) = vbNo Then 'Cancel = True End If >Cancel = True のかわりに、 Exit Sub あるいは、 Me.Undo Exit Sub のような感じですか。

du-sama
質問者

補足

回答ありがとうございます。 メッセージは出るようになりましたが、「はい」の場合、「クリック時」に入れているマクロでレポートを開きたいのですが、開きませんでした。 レポートを開くマクロには「レコードの保存」、「レポートを開く(クエリでフィルタ)」が入っています。 宜しくお願いいたします。

関連するQ&A

専門家に質問してみよう