Office 2019 Access 2019

編集フォームを閉じる時のボタンを設置(保存せずに閉じる処理も)

投稿日:2022年5月31日 更新日:

帳票フォームなどのレコード一覧から、同じレコードの詳細フォームを開いて編集することがあります。

この編集フォームを閉じる場合、編集した内容を保存して閉じるだけでなく、編集した内容をキャンセルして閉じたいということもあります。

編集フォームに[保存]ボタンと[キャンセル]ボタンを設置して、マクロアクションで設定します。

何も編集しないまま[キャンセル]ボタンをクリックしてもエラーメッセージが出ないように対処します。

単票フォームに[保存]と[キャンセル]ボタンを設置

参考ここでのウィンドウの表示は[ウィンドウを重ねて表示する]の設定にしています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...

続きを見る

テーブルとフォームの確認

商品マスターとして、以下のようなテーブル[T_商品]を作成しています。

マスターテーブル[T_商品]

以下は、デザインビューです。

テーブル[T_商品]のデザインビュー

フォームの作成

テーブル[T_商品]をもとに帳票フォームを作成して、[編集]ボタンをクリックすると、同じIDのレコードを単票フォームで開くように設定しています。

帳票フォームと単票フォーム

帳票フォーム[F_編集]の[編集]ボタンには、クリック時イベントのマクロアクションで設定しています。

[編集]ボタンのクリック時イベント-マクロビルダー

参考同じIDのレコードを開く設定については、以下の記事で解説しています。

データシートの[ID]をクリックして単票(詳細)フォームを開く

フォームのデータシートビューの[ID]番号をクリックしたら、その[ID]の単票フォームを開く方法です。 データシートのフォーム名は[F_デー ...

続きを見る

クエリを作成して設定する方法も解説しています。

帳票フォームのボタンをクリックして同じIDの単票フォームを起動する

Accessで、帳票フォームから同じIDの単票フォームをボタンで起動する方法を解説します。 横に長い情報より、1つのウィンドウで表示したいと ...

続きを見る

レコードを保存して閉じる[保存]ボタンの作成

編集用のフォームにレコードを保存するための[保存]ボタンを設置します。

フォームをデザインビューで開いて、[フォームデザイン」タブの[コントロール]から[ボタン]をクリックして任意の位置へドラッグします。

ウィザードが表示されたら[キャンセル]します。

[フォームデザイン」タブの[ボタン]

プロパティを開いて、コマンドボタンの[標題]と[名前]を付けます。

コマンドボタンのプロパティは、[F4]キーで表示することができます。

[標題」とは、ボタンに表示する名前のことです。

コマンドボタンの[標題]と[名前]

[プロパティ]の[イベント]タブにある[クリック時]の[ビルダー選択]ボタン[…]をクリックします。

[プロパティ]の[イベント]タブにある[クリック時]

[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

マクロウィンドウが表示されます。[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[レコードの保存]を選択します。

[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。

参考マクロアクション[メニューコマンドの実行]を選択して、一覧から[レコードの保存]を選択してもかまいません。

マクロアクションの一覧から[レコードの保存]を選択

続けて、マクロアクションの一覧から[ウィンドウを閉じる]を選択します。

マクロアクションの一覧から[ウィンドウを閉じる]を選択

[オブジェクトの種類]には[フォーム]、[オブジェクト名]には[フォーム名]を指定します。

設定が終わったら、上書き保存してマクロウィンドウを閉じます。

マクロアクションの[ウィンドウを閉じる]のパラメーター

これで、レコードを保存してフォームを閉じるボタンは完成です。

設定後のプロパティには、[埋め込みマクロ]と表示されます。

マクロアクション設定後のプロパティ

参考コマンドボタンウィザードを使って作成してもかまいません。[種類]で[フォームの操作]-[ボタンの動作]で[フォームを閉じる]を選択すると完成できます。

コマンドボタンウィザードを使用したボタンの作成

Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...

続きを見る

コマンドボタンウィザードの[フォームの操作]-[フォームを閉じる]

Accessでは、[フォームを閉じる]、[レコードを移動する]、[Accessを終了する]ときは、何も指定しなければレコードは保存されます。

ウィザードを使用すると、埋め込みマクロには[ウィンドウを閉じる]が設定され、パラメーターの部分[オブジェクトの種類][オブジェクト名]は空白になっていますが、パラメーターが空白の場合は、アクティブウィンドウが閉じられます。

ポップヒントにも記されています。

コマンドボタンウィザードで作成した[閉じる]ボタンのマクロアクション

なので、[ウィンドウを閉じる]だけを設定すれば、レコードは保存されてフォームが閉じられます。

[ウィンドウを閉じる]マクロを独立マクロで作成しておくと、複数のオブジェクトに利用できて便利です。

独立マクロと埋め込みマクロの違いを知って使い分け

Accessのマクロには、独立マクロと埋め込みマクロというのがあります。 独立マクロは、マクロを個別に作成して、後でオブジェクトのプロパティ ...

続きを見る

レコードを元に戻して閉じる[キャンセル]ボタンの作成

[キャンセル]ボタンを作成します。

レコードの編集をしようと思って開いたけど、編集する必要がなかったから閉じるという場合があります。

その場合、2つの状態があります。

1つは、レコードが編集されている場合、もう1つは、何も編集されていない場合です。

まず、[レコードを元に戻す]アクションと[ウィンドウを閉じる]アクションで作成してみます。

[キャンセル]ボタンを作成して、クリック時イベントのマクロビルダーを表示します。

フォームのデザインビュー[キャンセル]ボタン

以下のようにマクロアクション[レコードを元に戻す]の後に、マクロアクション[ウィンドウを閉じる]を設定します。

参考マクロアクション[メニューコマンドの実行]を選択して、一覧から[レコードを元に戻す]を選択しても同じです。

[キャンセル]ボタンのマクロウィンドウ

[キャンセル]ボタンが設置できたので、実行してみます。

レコードを編集した後は、レコードの編集した内容は元に戻して閉じられます。

しかし、何も編集しないまま[キャンセル]ボタンをクリックすると、以下のメッセージウィンドウが表示されます。

コマンドまたはアクション'元に戻す'は無効です。

[コマンドまたはアクション'元に戻す'は無効です。]のメッセージウィンドウ

元に戻す内容がないので、上記のようなエラーメッセージが表示されるわけです。

このエラーメッセージに対処する方法を3つ紹介します。

[エラー時]アクションを追加

予想できるエラーを回避するために、マクロアクション[エラー時]を追加します。

[キャンセル]ボタンのクリック時イベントの[…]をクリックして、マクロウィンドウを再度表示します。

[キャンセル]ボタンのクリック時イベント

[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[エラー時]を選択します。

マクロアクションの一覧から[エラー時]を選択

[エラー時]アクションの[移動先]は[次]を選択して、[上へ移動]ボタンをクリックして一番上まで移動します。

移動先

エラーが発生すると、[次へ]の場合はエラーが発生したアクションの次のアクションに進みます。[マクロ名]の場合は以下のサブマクロ名に移動します。[失敗]の場合はマクロの実行を中止します。

[エラー時]アクション

以下のような並びになります。

[エラー時]アクションを移動した後のマクロアクションの並び

再度、[エラー時]アクションを選択して、今度は[移動先]に[失敗]を選択して、[メニューコマンドの実行]の後ろへ移動します。

これでメッセージウィンドウは非表示になります。

[エラー時]アクションの追加

参考[エラー時]アクションについては、以下の記事でも解説しています。

[エラー時]アクションでマクロのエラーを出さずに次に進ませる

Accessでマクロを実行しようとすると、エラーメッセージが表示されて途中でストップしてしまうことがあります。 [エラー時]アクションを使用 ...

続きを見る

データが変更されているかをチェックして実行

条件分岐でフォームのデータが更新されたかどうかをチェックして、更新されていれば[元に戻す]アクションをしてフォームを閉じ、そうでなければ、そのまま閉じます。

[キャンセル]ボタンのクリック時イベントのマクロビルダーを表示します。

マクロアクションの一覧から[If]を選択します。

マクロアクションの一覧から[If]を選択

[If]の条件式に以下のように入力します。入力補助メニューを利用するとミスなく入力できます。

[Forms]![F_商品編集].[Dirty]

その後ろに続けて、マクロアクション[レコードを元に戻す]と[ウィンドウを閉じる]を設定します。

[Elseの追加]をクリックします。

[キャンセル]ボタンのマクロウィンドウで[If]アクションを設定

[ウィンドウを閉じる]を設定します。以下のようになります。

マクロアクションで[Else]の設定

参考以下の記事では、コードビルダーで解説しています。

「キャンセル」ボタンをクリックしてレコードを保存せずに閉じる

読み込み時に値を代入

フォームの読み込み時に既存のデータと同じデータを入力することで、開いたときに編集状態にします。

[キャンセル]ボタンのクリック時イベントの埋め込みマクロは、[レコードを元に戻す]と[ウィンドウを閉じる]のアクションのままです。

[キャンセル]ボタンのマクロアクション

[フォーム]プロパティを開いて、マクロアクションを1つ追加します。

フォームの左上の■をクリックすると、[フォーム]プロパティになります。

[イベント]タブの[読み込み時]の[ビルダー選択]ボタン[…]をクリックします。

フォームのプロパティ[イベント]タブの[読み込み時]

[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択

[マクロウィンドウ]が表示されます。

[マクロデザイン]タブの[すべてのアクションを表示]をオンにして、マクロアクションの一覧から[値の代入]を選択します。

マクロアクションの一覧から[値の代入]を選択

[値の代入]アクションの[アイテム]と[式]に同じフィールド名を入力します。

フォームを読み込むときに、同じ値を入力するということです。

ここでは、以下のように入力しています。

[商品コード]

マクロウィンドウは、上書き保存して閉じます。

[値の代入]アクションの[アイテム]と[式]に[商品コード]を入力

設定後の[フォーム]プロパティです。[読み込み時]に[埋め込みマクロ]と表示されます。

設定後の[フォーム]プロパティ

参考この設定をすると、フォームを開いたときに、レコードセレクタに鉛筆マークが表示され編集状態になっているのが分かります。

単票フォームを開いたときのレコードセレクタ

これが気になるようであれば、[フォーム]プロパティの[書式]タブで[レコードセレクタ]を[いいえ]にすると、レコードセレクタが非表示になります。

プルダウンから選択してもいいのですが、項目でダブルクリックすると、[はい]と[いいえ]を切り替えられます。

[フォーム]プロパティの[レコードセレクタ]を[いいえ]に設定

フォームの[閉じる]ボタンを無効にする

フォームの閉じるボタンを無効にしておくと、意図しないデータが保存されることを防ぐことができます。

[保存]ボタンか[キャンセル]ボタン以外では、フォームを閉じられなくします。

これは、フォームのプロパティで簡単に設定できます。

フォームの[閉じる]ボタン

デザインビューで[フォーム]プロパティを表示します。

[書式]タブの[閉じるボタン]を[いいえ]に設定します。

プルダウンから選択してもいいのですが、項目でダブルクリックすると、[はい]と[いいえ]を切り替えられます。

フォームプロパティの[閉じるボタン]を[いいえ]に設定

フォームビューに切り替えると、[閉じる]ボタンは無効になっていることを確認できます。

設定後のフォームビュー

参考以下の記事では、[コマンドまたはアクション'レコードの削除'は無効です。]のエラーメッセージが出た時の対処法を記しています。

[コマンドまたはアクション'レコードの削除'は無効です。]のウィンドウ

[コマンドまたはアクション'レコードの削除'は無効です]のメッセージ

Access2013で、フォームの[レコードの削除]ボタンを作成したのですが、ボタンをクリックするとメッセージ表示されるようになってしまいま ...

続きを見る

検索

ほかの記事も検索してみませんか?

Access / Excel / PowerPoint / Word

関連記事30件

moneytizerPCのみ

Profile

執筆者/はま

-Office 2019 Access 2019

Copyright © 2001-2024 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2024 AllRights Reserved Powered by AFFINGER4.