今回は復習を兼ねて、もう一つフォームを作り、別の書き方をしてみましょう。
押えておいて欲しいポイントは、以下の通りです。
・フォームのコピーの仕方
・関数の戻り値について
・戻り値を受け取る変数のデータ型
・関数の引数のデータ型に気をつける
・データ型を変換する方法
【1】Accessのファイル「SampleDB020.mdb」を起動します。
【2】フォーム「F101Test」をコピーして、「F102Test」を作成します。
【3】フォーム「F102Test」のコードを表示します。
*VBEを起動するということです。
【4】VBEが起動したら、フォーム「F102Test」のモジュールが操作の対象となっていることを、必ず確認してください。
【5】コマンドボタンをクリック時のイベントプロシージャを、以下のように修正します。
Private Sub cmdAdd_Click()
Dim cdValue As String
Dim nameValue As String
cdValue = InputBox("PREF_CD を入力してください。", "PREF_CD")
nameValue = InputBox("PREF_NAME を入力してください。", "PREF_NAME")
Call test8.addData(CInt(cdValue), nameValue)
MsgBox "追加完了"
End Sub
【6】ここまでの作業を「保存」してください。
【7】あとは前回と同じ要領で、フォーム「F102Test」の動作を確認してみてください。
【解説】
変更のあった場所だけ赤枠で囲んでみました。
(1)PREF_CDを保存しておくための変数を、「文字列型」に変更しました。
Dim cdValue As String
(2)InputBox関数の戻り値は文字列型なので、そのまま代入できます。
cdValue = InputBox("PREF_CD を入力してください。", "PREF_CD")
(3)しかし標準モジュール test8.addData() の最初の引数は数値型なので、データ型変換関数の CInt() を使い、文字列を整数型に変換してから渡しています。
Call test8.addData(CInt(cdValue), nameValue)
このように関数の引数には、別の関数を指定して、その戻り値を利用できます。関数部分が戻り値に置き換わるとイメージすると、納得できると思います。
Call test8.addData(CInt(cdValue), nameValue)
↓
Call test8.addData(99, nameValue)
CInt(cdValue) が 99 になるわけです。
【ワンポイント】
以上のように、プログラミングでは、ある程度プログラマーが自由に書くことができます。同じ動作をするプログラムでも、プログラマーによってソースコードが変わってきます。
したがって正解は無いのですが、「プログラムの読み易さ」や「効率の良いプログラム」を意識して作るようにすると良いでしょう。