はじめに
VBAを使いこなそう
Accessでは、ほとんどの作業をマクロによって処理できますがVBAでないと処理できないものもあります。それは
@独自の関数を作成する場合
A既定のエラーメッセージを変更して表示する場合
Bレコードを順番に操作する場合
Cコードに引数を渡す場合
DWindowsAPIを使う場合などです。初めてAccessでデータベースを経験するのならば、VBAでのプログラミングを目標にして覚えましょう。
マクロでできることはVBAでもできる
先ずはあなたの作成したデータベースのマクロを「名前を付けて保存」でVBAに変換してみましょう。VBAの勉強はここから始まります。
形式をマクロではなく、モジュールを選択するとVBAで保存されます。
プロシージャ
プロシージャとは実行時に処理される一つの集合体です。プロシージャには、Sub,Function,Propatyがあり、Functionは結果の値を返し、Subは値を返しません。Propatyはフォームやレポートのプロパティを設定すのに使われます。
また、全てのモジュールから呼び出せるPublicプロシージャと特定のモジュールからしか呼び出せないPrivateプロシージャがあります。例)
Sub FormOpen 'フォームを開くときサイズ、位置を指定する。1cm = 567 DoCmd.MoveSize 0, 0, 15280, 9700 '上 = 0, 左 = 0, 幅 = 15286, 高さ = 9700 End Sub Function Whatday(d As Date) '変数dに入力された日付から曜日を数字で表示する Whatday = WeekdayName(Weekday(d)) ' 1:日曜 2:月曜 3:火曜 4:水曜 ・・・・ End Function変数の宣言
変数とは関数などに必要な情報を提供するデータです。
数値や文字列など格納するには
変数名 = データオブジェクト変数の場合は
Set 変数名 = データとします。変数の宣言には Dim ステートメントを使用します。
例)
Function Length(Addr As String) As String ' アラビア数字を漢数字に変換する Dim i As Integer '変数 i は数値 Dim Addr_tmp As String '変数 Addr_tmp は文字 Dim Number As String '変数 Number は文字 For i = 1 To Len(Addr) '文字列Addrを調べる Number = Mid$(Addr, i, 1) '文字列Addrを1文字目から繰り返し以下の文字を調べる Select Case Number Case "0", "0" '全角・半角アラビア数字を漢数字に変換する Number = "0" Case "1", "1" Number = "一" Case "2", "2" Number = "二" Case "3", "3" Number = "三" Case "4", "4" Number = "四" Case "5", "5" Number = "五" Case "6", "6" Number = "六" Case "7", "7" Number = "七" Case "8", "8" Number = "八" Case "9", "9" Number = "九" Case "−", "-" Number = "" End Sub変数の有効範囲は宣言した場所によって変わります。
Private 宣言モジュール内などです。
Public すべてのモジュール内
Dim プロシージャの先頭で宣言した場合はプロシージャ内、モジュールの先頭で宣言した場合はモジュール内