- ベストアンサー
エラー内容が分かりません
- ACCESS VBAの独学を始めましたが、コードに入力したところ、「プロシージャの宣言がイベントまたはプロシージャの定義と一致していません」というエラーが表示されます。
- 具体的な入力内容は、Private Sub 閉じる_Click(cancel As Integer)を含むコードです。
- エラーがなくなるためには、「(cancel as ...)」を削除する必要があるようです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ボタンのクリックイベントにcancelパラメータは、ありません。 コードの内容からすると"Form_Unload"イベントに記載すべきと思われます。 以下の様にすればフォームを閉じる際に確認のメッセージが表示されます。 恐らくDoCmd.Closeは、必要ないはずです。 Private Sub 閉じる_Click() DoCmd.Close end sub Private Sub Form_Unload(Cancel As Integer) Dim sts As Integer sts = MsgBox("終了しますか?", vbYesNo) If (sts = vbNo) Then cancel = True End If End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
コントロールのイベントのプロシージュアーの引数(の名前・数とデータタイプ)は決ってますよ。 勝手にcancel As Integer などしてはいけない。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_050.html の フォームを閉じられた時のイベント(閉じるボタン) など参照。 閉じるとCaptionで表示されたコマンドボタンではなく、フォームの閉じるボタン(X)との違いを考えること。 ーー http://www.accessclub.jp/bbs5/0007/vba1720.html 参照 ーー エクセルでは http://www.ken3.org/vba/backno/vba061.html ユーザーフォームに(閉じるを担わせた)ボタンがある場合 Private Sub btnCLOSE_Click() Unload Me '自分自身を閉じます End Sub
- mm_wanko_mm
- ベストアンサー率30% (34/111)
>cancel As Integer ここでcancelをInteger、つまり整数型と定義しています。 なのにIf文中で cancel = True と宣言しています。 ture、falseはブール(Bool)型変数なので、これを使う場合はcancel as Boolと定義する必要があります。
お礼
解説いただきありがとうございました
お礼
丁寧な解説をいただき、ありがとうございました。 テキストの誤植でしょうか。 サイトで検索しても、上のように書いてあるところがあったりしたので 混乱してしまいました。 ありがとうございました。