帳票フォームなどのレコード一覧から、同じレコードの詳細フォームを開いて編集することがあります。
この編集フォームを閉じる場合、編集した内容を保存して閉じるだけでなく、編集した内容をキャンセルして閉じたいということもあります。
編集フォームに[保存]ボタンと[キャンセル]ボタンを設置して、マクロアクションで設定します。
何も編集しないまま[キャンセル]ボタンをクリックしてもエラーメッセージが出ないように対処します。
![単票フォームに[保存]と[キャンセル]ボタンを設置](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose40.png)
参考ここでのウィンドウの表示は[ウィンドウを重ねて表示する]の設定にしています。
-
[タブ付きドキュメント]と[重ねて表示]の違いと切り替え方法
Access 2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 以前からAccessを使っている方 ...
テーブルとフォームの確認
商品マスターとして、以下のようなテーブル[T_商品]を作成しています。
![マスターテーブル[T_商品]](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose07.png)
以下は、デザインビューです。
![テーブル[T_商品]のデザインビュー](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose08.png)
フォームの作成
テーブル[T_商品]をもとに帳票フォームを作成して、[編集]ボタンをクリックすると、同じIDのレコードを単票フォームで開くように設定しています。

帳票フォーム[F_編集]の[編集]ボタンには、クリック時イベントのマクロアクションで設定しています。
![[編集]ボタンのクリック時イベント-マクロビルダー](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose03.png)
参考同じIDのレコードを開く設定については、以下の記事で解説しています。
-
データシートの[ID]をクリックして単票(詳細)フォームを開く
フォームのデータシートビューの[ID]番号をクリックしたら、その[ID]の単票フォームを開く方法です。 データシートのフォーム名は[F_デー ...
クエリを作成して設定する方法も解説しています。
-
帳票フォームのボタンをクリックして同じIDの単票フォームを起動する
Accessで、帳票フォームから同じIDの単票フォームをボタンで起動する方法を解説します。 横に長い情報より、1つのウィンドウで表示したいと ...
レコードを保存して閉じる[保存]ボタンの作成
編集用のフォームにレコードを保存するための[保存]ボタンを設置します。
フォームをデザインビューで開いて、[フォームデザイン」タブの[コントロール]から[ボタン]をクリックして任意の位置へドラッグします。
ウィザードが表示されたら[キャンセル]します。
![[フォームデザイン」タブの[ボタン]](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose05.png)
プロパティを開いて、コマンドボタンの[標題]と[名前]を付けます。
コマンドボタンのプロパティは、[F4]キーで表示することができます。
[標題」とは、ボタンに表示する名前のことです。
![コマンドボタンの[標題]と[名前]](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose09.png)
[プロパティ]の[イベント]タブにある[クリック時]の[ビルダー選択]ボタン[…]をクリックします。
![[プロパティ]の[イベント]タブにある[クリック時]](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose17.png)
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
![[ビルダーの選択]ダイアログボックス](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose11.png)
マクロウィンドウが表示されます。[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[レコードの保存]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
参考マクロアクション[メニューコマンドの実行]を選択して、一覧から[レコードの保存]を選択してもかまいません。
![マクロアクションの一覧から[レコードの保存]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose13.png)
続けて、マクロアクションの一覧から[ウィンドウを閉じる]を選択します。
![マクロアクションの一覧から[ウィンドウを閉じる]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose14.png)
[オブジェクトの種類]には[フォーム]、[オブジェクト名]には[フォーム名]を指定します。
設定が終わったら、上書き保存してマクロウィンドウを閉じます。
![マクロアクションの[ウィンドウを閉じる]のパラメーター](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose15.png)
これで、レコードを保存してフォームを閉じるボタンは完成です。
設定後のプロパティには、[埋め込みマクロ]と表示されます。

参考コマンドボタンウィザードを使って作成してもかまいません。[種類]で[フォームの操作]-[ボタンの動作]で[フォームを閉じる]を選択すると完成できます。
-
コマンドボタンウィザードを使用したボタンの作成
Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...
![コマンドボタンウィザードの[フォームの操作]-[フォームを閉じる]](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose06.png)
Accessでは、[フォームを閉じる]、[レコードを移動する]、[Accessを終了する]ときは、何も指定しなければレコードは保存されます。
ウィザードを使用すると、埋め込みマクロには[ウィンドウを閉じる]が設定され、パラメーターの部分[オブジェクトの種類][オブジェクト名]は空白になっていますが、パラメーターが空白の場合は、アクティブウィンドウが閉じられます。
ポップヒントにも記されています。
![コマンドボタンウィザードで作成した[閉じる]ボタンのマクロアクション](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formcode612.png)
なので、[ウィンドウを閉じる]だけを設定すれば、レコードは保存されてフォームが閉じられます。
[ウィンドウを閉じる]マクロを独立マクロで作成しておくと、複数のオブジェクトに利用できて便利です。
-
独立マクロと埋め込みマクロの違いを知って使い分け
Accessのマクロには、独立マクロと埋め込みマクロというのがあります。 独立マクロは、マクロを個別に作成して、後でオブジェクトのプロパティ ...
レコードを元に戻して閉じる[キャンセル]ボタンの作成
[キャンセル]ボタンを作成します。
レコードの編集をしようと思って開いたけど、編集する必要がなかったから閉じるという場合があります。
その場合、2つの状態があります。
1つは、レコードが編集されている場合、もう1つは、何も編集されていない場合です。
まず、[レコードを元に戻す]アクションと[ウィンドウを閉じる]アクションで作成してみます。
[キャンセル]ボタンを作成して、クリック時イベントのマクロビルダーを表示します。
![フォームのデザインビュー[キャンセル]ボタン](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose30.png)
以下のようにマクロアクション[レコードを元に戻す]の後に、マクロアクション[ウィンドウを閉じる]を設定します。
参考マクロアクション[メニューコマンドの実行]を選択して、一覧から[レコードを元に戻す]を選択しても同じです。
![[キャンセル]ボタンのマクロウィンドウ](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose18.png)
[キャンセル]ボタンが設置できたので、実行してみます。
レコードを編集した後は、レコードの編集した内容は元に戻して閉じられます。
しかし、何も編集しないまま[キャンセル]ボタンをクリックすると、以下のメッセージウィンドウが表示されます。
コマンドまたはアクション'元に戻す'は無効です。
![[コマンドまたはアクション'元に戻す'は無効です。]のメッセージウィンドウ](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose19.png)
元に戻す内容がないので、上記のようなエラーメッセージが表示されるわけです。
このエラーメッセージに対処する方法を3つ紹介します。
[エラー時]アクションを追加
予想できるエラーを回避するために、マクロアクション[エラー時]を追加します。
[キャンセル]ボタンのクリック時イベントの[…]をクリックして、マクロウィンドウを再度表示します。
![[キャンセル]ボタンのクリック時イベント](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose31.png)
[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[エラー時]を選択します。
![マクロアクションの一覧から[エラー時]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose32.png)
[エラー時]アクションの[移動先]は[次]を選択して、[上へ移動]ボタンをクリックして一番上まで移動します。
移動先
エラーが発生すると、[次へ]の場合はエラーが発生したアクションの次のアクションに進みます。[マクロ名]の場合は以下のサブマクロ名に移動します。[失敗]の場合はマクロの実行を中止します。
![[エラー時]アクション](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose46.png)
以下のような並びになります。
![[エラー時]アクションを移動した後のマクロアクションの並び](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose34.png)
再度、[エラー時]アクションを選択して、今度は[移動先]に[失敗]を選択して、[メニューコマンドの実行]の後ろへ移動します。
これでメッセージウィンドウは非表示になります。
![[エラー時]アクションの追加](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose35.png)
参考[エラー時]アクションについては、以下の記事でも解説しています。
-
[エラー時]アクションでマクロのエラーを出さずに次に進ませる
Accessでマクロを実行しようとすると、エラーメッセージが表示されて途中でストップしてしまうことがあります。 [エラー時]アクションを使用 ...
データが変更されているかをチェックして実行
条件分岐でフォームのデータが更新されたかどうかをチェックして、更新されていれば[元に戻す]アクションをしてフォームを閉じ、そうでなければ、そのまま閉じます。
[キャンセル]ボタンのクリック時イベントのマクロビルダーを表示します。
マクロアクションの一覧から[If]を選択します。
![マクロアクションの一覧から[If]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose36.png)
[If]の条件式に以下のように入力します。入力補助メニューを利用するとミスなく入力できます。
その後ろに続けて、マクロアクション[レコードを元に戻す]と[ウィンドウを閉じる]を設定します。
[Elseの追加]をクリックします。
![[キャンセル]ボタンのマクロウィンドウで[If]アクションを設定](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose37.png)
[ウィンドウを閉じる]を設定します。以下のようになります。
![マクロアクションで[Else]の設定](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose38.png)
参考以下の記事では、コードビルダーで解説しています。
「キャンセル」ボタンをクリックしてレコードを保存せずに閉じる
読み込み時に値を代入
フォームの読み込み時に既存のデータと同じデータを入力することで、開いたときに編集状態にします。
[キャンセル]ボタンのクリック時イベントの埋め込みマクロは、[レコードを元に戻す]と[ウィンドウを閉じる]のアクションのままです。
![[キャンセル]ボタンのマクロアクション](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose39.png)
[フォーム]プロパティを開いて、マクロアクションを1つ追加します。
フォームの左上の■をクリックすると、[フォーム]プロパティになります。
[イベント]タブの[読み込み時]の[ビルダー選択]ボタン[…]をクリックします。
![フォームのプロパティ[イベント]タブの[読み込み時]](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose21.png)
[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。
![[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose22.png)
[マクロウィンドウ]が表示されます。
[マクロデザイン]タブの[すべてのアクションを表示]をオンにして、マクロアクションの一覧から[値の代入]を選択します。
![マクロアクションの一覧から[値の代入]を選択](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose48.png)
[値の代入]アクションの[アイテム]と[式]に同じフィールド名を入力します。
フォームを読み込むときに、同じ値を入力するということです。
ここでは、以下のように入力しています。
マクロウィンドウは、上書き保存して閉じます。
![[値の代入]アクションの[アイテム]と[式]に[商品コード]を入力](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose25.png)
設定後の[フォーム]プロパティです。[読み込み時]に[埋め込みマクロ]と表示されます。
![設定後の[フォーム]プロパティ](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose27.png)
参考この設定をすると、フォームを開いたときに、レコードセレクタに鉛筆マークが表示され編集状態になっているのが分かります。

これが気になるようであれば、[フォーム]プロパティの[書式]タブで[レコードセレクタ]を[いいえ]にすると、レコードセレクタが非表示になります。
プルダウンから選択してもいいのですが、項目でダブルクリックすると、[はい]と[いいえ]を切り替えられます。
![[フォーム]プロパティの[レコードセレクタ]を[いいえ]に設定](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose45.png)
フォームの[閉じる]ボタンを無効にする
フォームの閉じるボタンを無効にしておくと、意図しないデータが保存されることを防ぐことができます。
[保存]ボタンか[キャンセル]ボタン以外では、フォームを閉じられなくします。
これは、フォームのプロパティで簡単に設定できます。
![フォームの[閉じる]ボタン](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose41.png)
デザインビューで[フォーム]プロパティを表示します。
[書式]タブの[閉じるボタン]を[いいえ]に設定します。
プルダウンから選択してもいいのですが、項目でダブルクリックすると、[はい]と[いいえ]を切り替えられます。
![フォームプロパティの[閉じるボタン]を[いいえ]に設定](https://hamachan.info/WordPress2019/wp-content/uploads/2022/05/formclose44.png)
フォームビューに切り替えると、[閉じる]ボタンは無効になっていることを確認できます。

参考以下の記事では、[コマンドまたはアクション'レコードの削除'は無効です。]のエラーメッセージが出た時の対処法を記しています。
![[コマンドまたはアクション'レコードの削除'は無効です。]のウィンドウ](http://hamachan.info/win8/access/mukou2.gif)
-
[コマンドまたはアクション'レコードの削除'は無効です]のメッセージ
Access2013で、フォームの[レコードの削除]ボタンを作成したのですが、ボタンをクリックするとメッセージ表示されるようになってしまいま ...