Access VBA インプットボックス(InputBox関数)を使う方法。

VBA を使い、ユーザーが値を入力できるようにするには、いくつか方法があります。

Accessのフォームに、テキストボックスを配置する方法が一般的ですが、今回はプログラムの中から簡単に利用できる、インプットボックス(InputBox関数)を使ってみることにしましょう。インプットボックスなら、フォームを変更することなく利用できます。

前回コピーして作成した、フォーム「F101Test」を使います。


【1】Accessのファイル「SampleDB020.mdb」を起動します。


【2】フォーム「F101Test」を選択し、ツールバーの「コード」をクリックします。

access-vba-375.gif

*このようなVBEの表示の仕方も覚えておくと便利です。


【3】VBEが起動しました。フォーム「F101Test」のモジュールが操作の対象となっていることを、必ず確認してください。

access-vba-362.gif

*コピーしたものなので、イベントプロシージャが既に書かれています。


【4】コマンドボタンをクリック時のイベントプロシージャを、以下のように修正します。

access-vba-363.gif


Private Sub cmdAdd_Click()
  Dim cdValue As Integer
  Dim nameValue As String
  
  cdValue = CInt(InputBox("PREF_CD を入力してください。", "PREF_CD"))
  nameValue = InputBox("PREF_NAME を入力してください。", "PREF_NAME")
  
  Call test8.addData(cdValue, nameValue)
  MsgBox "追加完了"
End Sub



【5】ここまでの作業を「保存」してください。

access-vba-376.gif

変更点はたったこれだけです。既にインプットボックスから値を入力できるようになっています。


【解説】

(1)変数を宣言している部分です。
Dim cdValue As Integer 整数型
Dim nameValue As String 文字列型

変数名は何でもかまいません。プロシージャ内で宣言した変数は、そのプロシージャ内だけが有効範囲なので、他のプロシージャに同名の変数があっても区別されます。

*変数の有効範囲をスコープと言います。

今回は標準モジュール側と明確に区別するため、わざと別名を付けていますが、同じ名前でも大丈夫です。


(2)InputBox 関数を使い、PREF_CDの値を取得している部分です。
cdValue = CInt(InputBox("PREF_CD を入力してください。", "PREF_CD"))

InputBox 関数の最初の引数は、表示するメッセージで、2番目の引数はタイトルです。文字列なら何でもかまいません。

ポイントは InputBox 関数は、『文字列型の値を返す』ということです。そのままでは整数型の変数に代入することができません。そこでデータ型変換関数の CInt() を使い、文字列を整数型に変換してから代入しています。


(3)PREF_NAMEの値は、もともと文字列型なので、そのまま代入できます。
nameValue = InputBox("PREF_NAME を入力してください。", "PREF_NAME")


(4)あとは変数を引数に指定して、標準モジュールの Subプロシージャ を呼び出すだけです。
Call test8.addData(cdValue, nameValue)

この時、引数のデータ型に注意してください。標準モジュールの Subプロシージャ 側は以下のように定義しましたね。

test8.addData

Sub addData(pCd As Integer, pName As String)
  省略
End Sub


つまり呼び出す側の引数の「データ型、順番、数」を、呼び出される側と一致させる必要があるのです。

そのため変数 cdValue は整数型に、nameValueは文字列型にしています。


【ワンポイント】
InputBox 関数には、引数が多くありますが、そのほとんどが省略可能となっています。
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

引数を指定することで、規定値を設定したり、InputBoxの表示位置などが調整できます。
もっと詳しく知りたい場合は、 Microsoft Visual Basic のヘルプをご覧ください。

スポンサードリンク

スポンサードリンク






Access VBA 初心者入門講座 TOPへ