質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

0回答

360閲覧

Accessサブフォーム内で設定したマクロが機能しない

0531

総合スコア15

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/01/26 07:31

前提

Accessでシステム作成をしています。
サブフォーム付きのフォーム上でマクロを設置したのですがうまく機能せずに困っています。
内容としてはフォーム内に画面を閉じるボタン、保存前の状態に戻るボタン、保存ボタンの3つ作成しました。
ボタンの内容は以下の通りです。
「画面を閉じる」ボタン
エラー時:移動先「次」
メニューコマンドの実行:コマンド「レコードの保存」
If:[MacroError]=0 Then
If文の最後
ウィンドウを閉じる:オブジェクトの種類「フォーム」、オブジェクト名「フォーム名」オブジェクトの保存「確認」

「保存前の状態に戻る」ボタン
If:[Dirty]=True Then
メニューコマンドの実行:「レコードの保存」
If文の最後

「保存」ボタン
一時変数の設定:名前「onSave」、式「True」
メニューコマンドの実行:コマンド「レコードの保存」
If:MsgBox("登録完了!",0+64+0,"確認")=6 Then
If文の最後

さらにプロパティシートより下記の設定をしました。

「読み込み時」
レコードの移動:先頭のレコード
一時変数の設定:名前「onSave」式「False」

「更新前処理」
If:[TempVars]![onSave]=False Then
If:MsgBox("保存しますか?",4,"確認")=7
イベントの取り消し
If文の最後
一時変数の設定:名前「onSave」式「False」
If文の最後

「閉じるとき」
一時変数の削除:名前「onSave」

このように設定したのですが、登録ボタンをクリックしていないのにもかかわらず「画面を閉じる」ボタンをクリックするとそのまま画面が閉じてしまいます。別のフォームではうまく使えるのですがサブフォームありだとうまく機能しません。今回の場合はメインフォームは固定情報のためあくまでも参照するために表示させています。入力はサブフォームのみとなります。ボタンの設定が悪いのかプロパティシートの設定が悪いのかわからないためアドバイスください。よろしくお願いします。

実現したいこと

レコード保存前に画面を閉じようとすると「保存しますか?」と確認画面が出るようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージは特に出ていません。

該当のソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk.exe

2023/01/26 09:13

> サブフォーム付きのフォーム上でマクロを設置 > フォーム内に画面を閉じるボタン、保存前の状態に戻るボタン、 > 保存ボタンの3つ作成しました。 これらが全てメインフォームのいずれかのセクションに配置された コマンドボタンの埋め込みマクロに関する説明であるとして、 > レコード保存前に画面を閉じようとすると「保存しますか?」と > 確認画面が出るようにしたいです。 サブフォームからメインフォーム上のいずれかのコマンドボタンに フォーカスが移動した時点で、サブフォームのカレントレコードは 既に保存されています。よってメインフォーム側のマクロでは実現不可能です。 他の方法(テンポラリテーブルを設けてサブフォームのレコードソースとする、 あるいは VBA でトランザクション制御を行なう等)を検討された方がよいでしょう。
0531

2023/02/07 08:15

遅くなってしまい申し訳ございません。 サブフォームに3つボタンを設置するようにしたらできました。 色々ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問