はじめに
皆さんエクセルはよく使うと思います。
簡単に表計算が出来て便利ですよね。ちょっとした電卓代わりに使うこともよくあります。
でもこんなことで悩んだりしませんか?
私も以下のようなことで悩んでいました。
- 複雑な計算式で参照しているリンクがずれていた
- 多くの人と共有で使っていて計算式が壊されていた
- 印刷フォーマットが崩れてしまう
解決手段として Microsoft Accessの利用をお勧めします。
Accessの特徴とすれば以下のことがあります。
- エクセルより多くのデータを扱える
- 入力データを消される心配がない
- 印刷するためのレポートが綺麗
- 内部の計算式が壊される事がない
- 入力フォームでエクセル入力が容易
システム設計のポイント
Access のオブジェクトの詳細については専門書に任せます。
各オブジェクトの設計のポイントなどをまとめましたので参考にしてください。
テーブル作成時のポイント
テーブルはデータを格納する部分です。
もっとも最初に作る部分です。テーブルの設定がうまくいっているとその先がうまくいきます。
ポイントは以下のことになると思います。
リレーションシップを確立するために親テーブルが必要になります。
親テーブルは扇の要みたいなものですね。
この階層をしっかりと区別することが重要になってきます。
この階層を区別するためにもテーブル名には番号を付けることをお勧めします。
クエリ作成時のポイント
テーブルから必要なデータを抽出するのがクエリです。
集計、選択、削除などもできます。
ポイントは以下のことになると思います。
フォーム作成時のポイント
フォームアクセスの肝になっています。
入力の支援を行うことで、誤入力を防ぎます。
レポート作成時のポイント
個人的にはアクセスのレポートはエクセルで難しいと思います。
一度作ってしまえば、システムを変えない限りずっと使うものです。
ポイントは以下のことになると思います。
使えるVBA
メッセージボックス
テキストボックスにフォーカスを取得した時にメッセージを表示するものです。
メッセージボックスが& vbCrLf &で改行されるため見やすくになっています。
Private Sub テキストボックス名_GotFocus()
MsgBox (“この中にメッセージを入力” & vbCrLf & “この中にメッセージを入力“)
End Sub
レポートを開く
コマンドボタンを押すとレポートをプレビューで開くコードです。
OpenReport のアクションを変えることでテーブル、クエリを開くこともできます。
Private Sub コマンドボタン名_Click()
DoCmd.OpenReport “レポート名“, acViewPreview
End Sub
フォームを開くときに最大化して最後のレコードを表示する
メインのフォームを開くときに便利なコードです。
発生イベントはフォームを開くときに設定します。
Private Sub Form_Open(Cancel As Integer)
DoCmd.Maximize
DoCmd.GoToRecord , , acLast
End Sub
データを更新する
途中入力をおこなったものを反映させます。
対象のクエリを更新するものになります。
開いて閉じる作業をしているだけです。
DoCmd.OpenQuery “クエリ名“, acViewNormal, acEdit
DoCmd.Close acQuery, “クエリ名“, acSaveYes
Null値の確認
データの有無を判断します。
新規レコードはNullなので、判別に利用します。
Falseは値がある場合になります。
If IsNull(テキストボックス名) = False Then
Else
End If
繰り返し処理をする-Do Loop
データがいくつもあるとき繰り返し計算に使います。
ループから抜け出せるようにしておかないと永久に計算しますので注意してください。
Exit Doでループから抜けます。
下記は、If 文で条件判別をして計算を繰り返すパターンになっております。
Do
If 〇 then
〇×〇
Else
Exit Do
End If
Loop
エラーを見つけるのに便利-Debug.Print
VBA 編集の途中で変数に何を確認したのかを確認できます。
思った通りに計算が進んでない場合に、変数の値がイミディエイトウィンドウに表示され確認できます。
下記のコードでは数量×金額でテキストに値が入力され、その値がイミディエイトウィンドウに表示されます
テキスト金額 = 数量 * 金額
Debug.Print テキスト金額
最後に
アクセスの設定の仕方について記事にしてみました。
自分で使って便利な VBA のコードも載せてみました。
今後、追加もしていきたいと思っています。
最後まで読んでいただきありがとうございました。
コメント