Accessのフォームで複数の入力項目があっても、必要な項目をすべて入力せずに保存されてしまうことがあります。
できるだけ、入力の手間を省いて、また未入力の項目がないようにしたいものです。
非連結のテキストボックスに条件付き書式を設定して、チェックがオンになったら、非連結のテキストボックスの文字列を目立たせて入力を促すようにします。
非連結のテキストボックスを作成
サンプルとして商品の在庫チェックの単票フォームを作成しています。
フォームは、以下のテーブルをもとに作成しています。
確認者の入力を忘れる方が多いので、[確認済]のチェックボックスがオンになったら、注意書きを表示して入力を促すようにします。
単票フォームをデザインビューで開いて、非連結のテキストボックスを挿入します。
[フォームデザイン]タブの[コントロール]から[テキストボックス]を選択して、[詳細]セクション内の任意の位置へドラッグします。
この時[Ctrl]キーを押しながら、ドラッグするとラベルは挿入されず、テキストボックスのみが挿入されます。
挿入後、[テキストボックスウィザード]ダイアログボックスが表示されたら[キャンセル]ボタンをクリックしてください。
非連結のテキストボックスが挿入されました。
非連結とは、どのフィールドにも紐づけされていないということです。なので、テーブルに保存されることはありません。
表示したい文字列を入力
非連結のテキストボックスに表示したい文字列を入力します。
ここでは、[="確認者を入力してください!"]とします。
="確認者を入力してください!"
必ず文字列はダブルクォーテーションで囲むようにします。
非連結のテキストボックスに入力したものは、プロパティの[データ]タブの[コントロールソース]にも入力されます。
参考プロパティの[既定値]に文字列を入力してもかまいませんが、コントロールソースに入力しておいたほうが分かりやすいと思います。
テキストボックスの書式
境界線スタイルは、[透明]にします。[背景スタイル]は既定の[普通]にしておきます。
[背景スタイル]を[透明]にすると、条件付き書式で背景色の設定ができません。
参考非連結のテキストボックスは、自動的に名前が付けられていますが、必要であればプロパティの[その他]タブで名前を付けてください。
条件付き書式の設定
条件付き書式を設定する前に、チェックボックスの名前を確認しておきます。ここでは、[確認済]ですね。
[条件付き書式ルールの管理]ダイアログボックスの表示
テキストボックスを選択したまま[書式]タブの[コントロールの書式設定]グループにある[条件付き書式]をクリックします。
[条件付き書式ルールの管理]ダイアログボックスが表示されます。
[新しいルール]をクリックします。
[新しい書式ルール]ダイアログボックスが表示されます。
[ルールの種類を選択してください]では、[現在のレコードの値を確認するか、式を使用する](既定)を選択して、[次のセルの書式設定]で[式]を選択します。
コントロール[確認済]のチェックボックスがオンという式を入力します。
そして、[背景色]と[フォントの色]を設定して、[OK]ボタンをクリックします。
ここでは、黄色の背景に赤のフォントにしています。
太字や斜体、下線の設定もありますので、任意で設定してください。
[新しいルール]をクリックして、今度は、コントロール[確認済]のチェックボックスがオフのときの書式を設定します。
[式]には、以下のように入力します。
そして、フォントの色で白を選択します。[詳細」セクションに背景色を設定している場合は、その背景色と同じ色を選択します。
[条件付き書式ルールの管理]ダイアログボックスは以下のようになります。
参考非連結のテキストボックスのプロパティで前景色を白(詳細セクションの背景色と同じ色)に設定する方法もあります。その場合は、条件付き書式の式が「[確認済]=False」の書式ルールは不要になります。
ただ、非連結のテキストボックスには、コントロールソースの文字列は表示しておいたほうが後々分かりやすいと思います。
[確認者]が入力されたらメッセージを非表示にする
[確認者]の名前が入力されたらメッセージは非表示にします。
[条件付き書式ルールの管理]ダイアログボックスで、[新しい書式ルール]をクリックします。
[次のセルのみ書式設定]で[式]を選択して、以下を入力します。[確認者]が空白ではないという意味です。
書式は、フォントの色で白を選択して[OK]ボタンをクリックします。
以下のように3つの書式ルールがあります。
最後の[式が[確認者] Is Not Null]を選択して、[上へ移動]ボタンを2回押して先頭に配置します。
条件付き書式の優先順位は上から順に適用されます。
3つの書式ルールの順番が以下のようにできたら、[条件付き書式ルールの管理]ダイアログボックスの[OK]ボタンをクリックして閉じます。
フォームビューで確認
フォームビューに切り替えて、動作を確認してみます。
キーボードから[F5]キーを押すと、デザインビューからフォームビューに切り替えられます。
[確認済]のチェックボックスをオンにすると、非連結のテキストボックスの文字が現れます。
[確認者]を入力すると、メッセージは非表示になります。
[確認済]のチェックボックスをオフにしても、非連結のテキストボックスは非表示になります。(消えたように見えます)
また、[確認済]のチェックボックスをオンにして、[確認者]を入力した後、[確認者]を削除してもレコードを保存するときにメッセージが表示されます。
これで確認者が未入力になることは少なくなるかもしれません。
未入力のテキストボックスがあれば、閉じる時にメッセージボックスを表示する方法もありますが、条件付き書式で文字を表示する方法は簡単で作成しやすいと思います。
以下は、もっと効率よく入力するための方法です。
参考Accessの条件付き書式については、以下の記事でも解説しています。
-
カーソルがあるテキストボックスのレコード全体に背景色をつける
Accessの帳票フォームでフォーカスがあるテキストボックスに色を付けるのは、条件付き書式で簡単に設定できます。 でも、フォーカスがあるレコ ...
-
フォームとレポートの条件付き書式(データバー機能)
Access2010の新機能です。 フォームやレポートの[条件付き書式]で他の値との比較結果をExcelと同じように[データバー]として表示 ...
-
チェックをオンしたら背景色を付ける(条件付き書式で複数条件の結び付けも)
Accessのフォームやレポートでは条件付き書式を設定することができます。 この条件付き書式で、複数の条件を満たされているかどうかを判定する ...
-
チェックをオンにしてテキストボックスを使用不可にする(条件付き書式)
Accessのフォームでチェックボックスをオンにすると、指定したコントロールを使用不可にする方法です。 条件付き書式の数式を使用して、条件が ...
チェックがオンになるとコンボボックスのリストを自動表示するには
コンボボックスは、フォーカスされると自動的にリストを表示できるように設定できます。
チェックボックスをオンにしたら、コンボボックスに移動するようにすると、リストも表示されるようになります。
[確認者]のコントロールソースには、以下のように[値集合タイプ]を[値リスト]にして、[値集合ソース]にリストに表示したい値を直接入力しています。
参考コンボボックスの作成方法は、いろいろあります。コンボボックスの作成やプロパティの設定については、以下の記事で解説しています。
-
コンボボックスとリストボックスのカスタマイズ(プロパティの設定)
フォームにコンボボックスやリストボックスを使用すると、一覧のリストの中から選択できるようになります。 作成方法はいくつかありますが、コンボボ ...
チェックボックスがオンになったらコントロールへ移動
チェックボックスがオンになったら、自動的に[確認者]のコンボボックスへ移動するようにします。
ここでは、マクロビルダーでの解説です。
コントロール[確認済]を選択して、プロパティの[イベント]タブの[更新後処理]の[ビルダー選択]ボタン[…]をクリックします。
そして、[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。
[新しいアクションの追加]の▼をクリックしてマクロアクションの一覧から、[コントロールの移動]を選択して、[コントロール名]に[確認者]と入力します。
上書き保存して閉じます。
閉じると、プロパティの[イベント]タブの[更新後処理]には、[埋め込みマクロ]と表示されています。
フォーカス取得後にリストを表示
次に[確認者]のコンボボックスを選択して、プロパティの[イベント]タブの[フォーカス取得後]の[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。
[新しいアクションの追加]の▼ボタンをクリックして、[If]を選択します。
そして、以下を入力します。[確認済]のチェックボックスがオンならば、という意味です。
すぐ下にある[新しいアクションの追加]で[プロシージャの実行]を選択します。
そして、以下を入力します。
次に[Elseの追加]をクリックします。
[マクロデザイン]の[表示/非表示]グループにある[すべてのアクションを表示]をクリックします。
そして、マクロアクション[値の代入]を選択します。
[値の代入]は[すべてのアクションを表示]をオンにしないと表示されませんので、気をつけてください。[値の代入]はマクロアクションの一覧の最後から4番目にあります。
[値の代入]の[アイテム]に以下を入力します。
[式]には、以下を入力します。
Null
[確認済]のフォーカス取得後のマクロアクションは以下のようになります。
確認したら、上書き保存して閉じます。
これで、[確認済]のチェックボックスをオンにすると、コンボボックス内にカーソルが移動して自動的にリストが表示されるようになります。
[確認済]のチェックボックスをオフにすると、[確認者]のコントロールはNullになります。
非連結の文字列も消えます。
参考コンボボックスにカーソルが表示されると、自動的にリストを表示する方法は、以下の記事で詳しく解説しています。
-
コンボボックス内にカーソルが移動すると自動でリストを表示するには
Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...
日付の自動入力
[チェック日]のコントロールには、自動的に今日の日付を入力することができます。
[チェック日]のテキストボックスを選択して、プロパティの[イベント]タブの[フォーカス取得後]の[ビルダー選択]ボタン[…」をクリックします。
そして、[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。
ここは、[確認者]コントロールと同じように設定します。
[すべてのアクションを表示]をクリックしないとマクロアクション[値の代入]は選択できませんので、気をつけてください。
また、時刻まで表示したいのであれば、[式]には、[Now()]と入力します。
そして、[確認済]の[更新後処理]の埋め込みマクロに追加します。
[埋め込みマクロ]と表示された[…]をクリックします。
[新しいアクションの追加]でマクロアクション[コントロールの移動]を選択して、[コントロール名]に[チェック日]と入力します。
[上へ移動]ボタンをクリックします。
以下のようになります。
[チェック日]のあとに、[確認者]へ移動します。
確認して上書き保存して閉じます。
フォームビューに切り替えて、動作を確認します。
[確認済]のチェックボックスをオンにすると、今日の日付が自動的に入力され、コンボボックスの[確認者]のリストが表示されます。
非連結のテキストボックスの文字も現れます。
[確認者]を選択した状態です。メッセージは消えます。
[確認済]のチェックボックスをオフにすると、[チェック日]と[確認者]はNullになります。
参考チェックボックスの値を文字として表示する方法は、以下の記事で解説しています。
印刷時は、チェックボックスより文字列で表示したほうが分かりやすくなります。
-
Yes/No型をチェックボックスではなく文字列で表示するには
Accessのテーブルでフィールドのデータ型を[Yes/No型]にすると、データシートビューではチェックボックスになります。 テーブルや、フ ...
日付選択カレンダーをフォーカス取得時に自動表示する設定については、以下の記事で解説しています。
-
日付選択カレンダーをフォーカス取得時に自動表示するには
Accessで[日付/時刻型]のデータ型を選択すると、既定で日付選択カレンダーが表示されます。 Access2007からの機能です。 日付/ ...