Access超入門
住所録を完成する
作成日:2018/10/25

ページ内目次

  1. 概要
  2. 「F住所録一覧表」フォームとコントロールのプロパティ修正
    1. フォームのプロパティを設定する
    2. コントロールのタブストップを「いいえ」に設定する
  3. 一覧表フォームから目的のレコードを検索し、明細フォームを表示する
  4. 明細表示用のボタンを配置して明細表示する
    1. ボタンを配置する場所
    2. フォームフッターの高さを設定する
    3. フォームフッターにボタンを配置する
    4. ボタンのプロパティ変更
  5. 改行キー(Enterキー)を押して明細表示する
  6. レコードセレクタをダブルクリックして明細表示する
  7. VBAコードを入力する
  8. 住所録の完成

1.概要

この講座で既に作成済みの「F住所録一覧表」フォームと、 「F住所録明細」フォームを連携して、 より使いやすい住所録を作成します。

「F住所録一覧表」フォームも「F住所録明細」フォームも共に単独で住所録の役割を果たすことができますが、
「F住所録一覧表」フォームは管理する項目が多くなれば表としての形態を保つことが難しくなります。
「F住所録明細」フォームは件数(レコード数)が多くなれば、 目的のレコードまで到達することが難しい作業になります。

そこで、 「F住所録一覧表」フォームを検索だけを目的のフォームにします。
「F住所録一覧表」フォームから目的のレコードを選択し、 検索した結果を「F住所録明細」フォームに表示ます。
その「F住所録明細」フォームで目的のデータを見たり修正することができるようにすることとします。

つまり、 「4-1. 住所録の完成とは」 の説明と重複しますが、

徳川家康を選択する まずこのように一覧表(F住所録一覧表)を表示し、 2件目の「徳川家康」を選択します。

表示された明細画面 選択すると、 このような単票形式の明細(F住所録明細)が表示されるようにシステムを改良します。

2.「F住所録一覧表」フォームとコントロールのプロパティ修正

フォームのプロパティを設定する
「F住所録一覧表」フォームは検索の目的のためだけに使用するので、 データの修正などはできないようにします。

フォームのプロパティシート 「F住所録一覧表」をデザインビューで開きます。
フォーム全体が選択されていないときは、 「フォームセレクター」 をクリックして、 フォーム全体を選択してください。

フォームのプロパティが表示されていないときは「F4」キーを押して表示してください。

左の画像がフォームのプロパティです。
データタブを開いています。

下の方にある「追加の許可」、「削除の許可」、「更新の許可」は全て規定値である「はい」になっています。
これは名前の通りこのフォームで追加、削除、更新を行うことができるようになっています。
今回はそれを全て「いいえ」に変更します。
これで「F住所録一覧表」では、 レコードの追加や削除はもちろんデータ内容の変更もできません。

コントロールのタブストップを「いいえ」に設定する
検索ということは、 通常「氏名」で検索を行いますので、 タブキーで移動した場合「氏名」以外にはのストップさせる必要はありません。
選択のためにタブキーで画面をスクロールするときに、 「氏名」→「郵便番号」→「住所1」→「住所2」そして次の行の「氏名」とカーソルが移動するよりも、 「氏名」→次の行の「氏名」→その次の行の「氏名」とカーソルが移動してくれる方が使い勝手が良いのです。
そこで、 「氏名」以外のコントロールのタブストップを「いいえ」に設定し、 タブキーで移動したときに「氏名」だけにカーソルが止まるようにします。

プロパティシートでタブストップを「いいえ」に設定する コントロールのプロパティシートを表示し、タブストップを「いいえ」に設定します。

名前以外の郵便番号、住所1、住所2を順に設定しても良いのですが、
今回は下記の順序で設定します。
  1.全てのコントロールをドラッグして選択し、 タブストップを「いいえ」に設定します。
  2.名前を選択し、 タブストップを「はい」に設定します。
このような操作をすることで、 コントロールがいくつあっても2回の操作で完了します。

左の画像はその時のプロパティシートです。
複数のコントロールを選択しているため、 コントロール名は空白になっています。

3.一覧表フォームから目的のレコードを検索し、明細フォームを表示する

この講座では、 F住所録一覧表フォームを表示して目的のレコードを検索し、 F住所録明細フォームを表示します。
検索するには一覧表フォームで1行前後に移動したり、 ページごとに移動する必要があります。
そこで、 利用者が検索するために行う操作を考えてみます。

タブキーを押すまたは改行キーを押して1行づつ移動します。
一覧表フォームは「氏名」だけにカーソルがストップするようにしていますので、 タブキーや改行キーを押すと「氏名」項目だけにカーソルが移動します。
画面の一番下の行に来たあとは画面が1行づつスクロールします。
目的の「氏名」にカーソルが来たときに明細表示の操作を行います。

「Page Up」キーや「Page Down」キーを操作して画面を1ページづつスクロールさせる。
画面に目的の氏名を見つけた場合は、人にはわかりますがAccessにはどれかはわかりません。
そこで見つけた「氏名」をクリックしてから明細表示の操作を行います。

次に利用者がどのような操作をして明細表示の意思表示をするかを考えます。
・明細表示用のボタンを配置して、 そのボタンをクリックする。
・改行キー(Enterキー)を押して明細表示する。(この場合は改行キー(Enterキー)を検索には利用できません)
・目的の氏名がある行の レコードセレクタ をダブルクリックして明細表示する。

次からは、 その具体的な方法を順に解説します。

なお、 「F住所録一覧表」フォームから「F住所録明細」フォームを呼び出すにはVBAを使用します。
予め「この講座で使用するVBA」を呼んでおいてください。
「よくわからない」という場合でも、 書いてあるものをそのまま記述すれば良いようにしています。(コピペで実現できます)

4.明細表示用のボタンを配置して明細表示する。

ボタンを配置する場所
フォームを制御するボタンはフォームフッターに配置することとします。
フォームヘッダーに配置しても構いませんが、 よく見かけるのはフォームの下側、 つまりフォームフッターに配置していることが多いようです。
表形式フォームの詳細 セクション に配置すると、表示している行の全てにボタンが表示されてしまいます。
なお、 詳細セクションでレコードをスクロールしても、 ヘッダーとフッターは固定位置にありスクロールしません。
フォームフッターの高さを設定する
上下の幅を変更するポインター形状 F住所録一覧表をデザインビューで開いてください。
プロパティシートの書式タブにある「高さ」が「0cm」となっているはずです。
これではボタンを配置できませんのでボタンが配置できる程度の高さに設定します。

フォームフッターの高さを変更する方法1
フォームフッターのバーをクリックしてプロパティシートの書式にある「高さ」に「1」を入力します。
本来は「1cm」と入力するのですが、 「cm」はAccessが補完してくれるので入力は不要です。

フォームフッターの高さを変更する方法2
フォームフッターバーの下端にマウスのポインターを持っていってください。
マウスのポインターが 上下の幅を変更するポインター形状 の形状に変わったときに、 左クリックしたままで下にドラッグするとフォームフッターの高さが変化します。
この方法だと、 正確な高さにはできないので方法1のプロパティシートで設定するのが良いでしょう。

フォームフッターにボタンを配置する
フォームフッターの高さ変更後 フォームフッターの高さを「1cm」に変更したあとの画像です。
ここにボタンを配置します

リボンのデザインタブを開き、 ボタンを選択します。

ボタンにマウスポインターを合わせた画像 赤い四角の部分がボタンです。
ボタンにマウスポインターを合わせると、 この画像のように下に「ボタン」と表示されます。

ボタンを左クリックして、 フォームフッターの配置したい場所でもう一度左クリックするとボタンが配置されます。
(ドラッグする必要はありません)

ボタン配置後 ボタン配置後の画像です。

ボタンのプロパティ変更
ボタンには「コマンド15」と表示されています。
これはAccessが自動的に設定してくれたものです。
ボタンの場合は「コマンド」の後ろに連番を振ったものを設定してくれています。
これでは利用者が何のボタンかわからないので「明細表示」と変更します。
変更の方法は2種類あります。
ひとつ目はボタンのプロパティの書式タブにある「表題」変更するものです。
ふたつ目は、 ボタンをダブルクリックすると直接変更することができます。

次のプロパティは、 このボタンの名前の変更です。
ここで指定した名前はVBAで使用しますので、 意味のある名前にしておかないと開発時に分かりづらくなってしまいます。
名前はプロパティの「その他」タブで変更します。
「その他」タブ内の「名前」が「コマンドnn」となっているものを「コマンド明細表示」に変更します。
単に「明細表示」だけでも良いのですが、 幾種類ものコントロールを配置して、 それそれにイベントプロシージャを定義したときに、 ボタンコントロールのイベントプロシージャであることを示すために「コマンド」を先頭に付けます。
ボタンのイベントプロシージャなら「ボタン明細表示」としても良いのですが、 Accessが「コマンド」と名前を付けているのでそれに従っています。

つぎに、 このボタンに対するイベントプロシージャを作成します。
イベントプロシージャを追加する ボタンを右クリックして「イベントのビルド(E)」を選択する方法もありますが、
ここではプロパティシートから作成する方法を解説します。

「明細表示」ボタンをクリックして、 明細画面(F住所録明細)を表示するので、イベントタブの「クリック」を選択して ビルドボタンビルドボタン) をクリックします。
Accessのオプションで 常にイベントプロシージャを使用する にチェックが入っていないときはビルダーの選択ウィザードが表示されるので 「コードビルダー」 を選択します。

明細ボタン用プロシージャ VBEに切り替わり、 このような画面が新しく表示されます。
ここにVBAを記述するのですが、 全ての方法で記述するVBAコードは同じなので具体的なことは 「6.VBAコードを入力する」を見てください。

5.改行キー(Enterキー)を押して明細表示する。

F住所録一覧表フォームをデザインビューで開いてください。
氏名コントロールをクリックして選択し、 プロパティシートを表示します。
「イベント」タブの「キークリック時」の ビルドボタン をクリックしてください。

Enterキー押下時のイベントプロシージャ VBEに切り替わり、 このような画面が新しく表示されます。
ここにVBAを記述するのですが、 全ての方法で記述するVBAコードは同じなので具体的なことは 「6.VBAコードを入力する」を見てください。

6.レコードセレクタをダブルクリックして明細表示する。

F住所録一覧表をデザインビューで開いてください。
フォームセレクタ をクリックして選択してプロパティシートを表示してください。
「イベント」タブの「ダブルクリック時」の ビルドボタン をクリックしてください。

レコードセレクターダブルクリック時のイベントプロシージャ VBEに切り替わり、 このような画面が新しく表示されます。
ここにVBAを記述するのですが、 全ての方法で記述するVBAコードは同じなので具体的なことは 「6.VBAコードを入力する」を見てください。

7.VBAコードを入力する

どのイベントプロシージャの場合も、「Privare Sub」の次の行に
DoCmd.OpenForm "F住所録明細", , , "id=" & Me.id
を入力してください。

VBAコードの詳細は、この講座で使用するVBA をよく読んでおいてください。

8.住所録の完成

これで、 フォームを使った住所録はとりあえず完成しました。
とはいえ、 もう少しレベルアップしたいという人は次の「5. 住所録を進化させる」を見てください。
順不同でレベルアップの解説を行っています。
免責免責