トップ > スキル : アプリケーション > VBA for Access > 応用編(Accessで使える活用技)

VBA_Access

Accessで使える活用技

Accessで作成したデータベースシステムでは、いろいろな場面で使える技があります。ユーザによって作成されるデータベースは異なりますが、要所で利用できる技はどこでも使えるものが多いようです。
ここでは、データベースをより完成度の高いものを目指す手段をご紹介します。

入力時の間違えをメッセージで伝える

フォーム上のテキストボックスなどに、日付を入れるところに文字列のデータを誤って入力することがあります。そのような時に、入力データが異なる旨のメッセージを表示させれることができます。

① 設定したいフォームのプロパティシートを表示します。

② [フォーム]の[エラー時]プロパティを「イベントプロシージャ」にして、ビルドボタンをクリックします。

③ 次のプロシージャを入力します。

	Private Sub Form_Error(DataErr As Integer, Response As Integer)
		Const ErrNo = 2113
		If DataErr = ErrNo Then
			MsgBox "入力したデータが違います!再度確認して入力してください。"
			Response = acDataErrContinue
		Else
			Response = acDataErrDisplay
		End If
	End Sub
    

※ エラーコード2113は、入力可能なデータ型以外が入力された時のシステムエラーの番号になります。

※ 「Response = acDataErrContinue」は、エラー時に発生する返答に、本来のメッセージを非表示にする定数を格納する処理です。「acDataErrDisplay」は、他のエラーに対しては設定どおりの処理を行い、本来のメッセージを表示する定数です。

フォームの表示位置を指定する

通常、フォームは画面の中央に表示されます。フォームの表示位置をユーザが自由に指定することができます。表示位置を調整する場合は、フォームの[読み込み時]プロパティにイベントプロシージャを作成します。

① 設定するフォームのプロパティシートを表示します。

② [フォーム]の[読み込み時]プロパティをイベントプロシージャにして、ビルドボタンをクリックします。

③ 次のプロシージャを入力します。

	Private Sub Form_Load()
		DoCmd.MoveSize 500, 500, 6500, 2500
	End Sub
    

※ MoveSizeの引数は4つあり、第1引数がAccessウィンドウの左端からフォームの左端までの距離、第2引数がAccessウィンドウの上端からフォームの上端までの距離、第3引数がフォームの幅、第4引数がフォームの高さになります。数字は何回か適当な数値を入れて調整します。幅と高さを省略すると自動調整されます。

入力時にコンボボックスを自動的に開く

フォーム上で新規データなどを入力する場合、コンボボックスはドロップダウンボタンをクリックして、一覧表示してから選択を行いますが、カーソルがコンボボックスに移動したら自動的にリストを表示することができます。カーソルがそのコントロールに移動した時なので、イベントの作成は[フォーカス取得時]プロパティで行います。

① 設定するコンボボックスのプロパティシートを表示します。

② コンボボックスの[読み込み時]プロパティをイベントプロシージャにして、ビルドボタンをクリックします。

③ 次のプロシージャを入力します。

	Private Sub 顧客ID_GotFocus()
		Me!顧客ID.Dropdown
	End Sub
    

※ Me!は現在使用中のオブジェクト(ここではF_見積(メイン)フォーム)のことを表します。

※ 「顧客ID」はコンボボックスの名前で、Dropdownメソッドを指定します。

全角を半角に自動修正

データを入力時、数字やアルファベット、カタカナをすべて半角にしたい場合があります。誤って全角で入力しても入力確定時に自動的に半角に修正することができます。入力確定後に自動修正を行いたいので、イベントは[フォーカス喪失後]に作成します。

① 設定するテキストボックス(ここでは住所テキストボックス)のプロパティシートを表示します。

② テキストボックスのの[フォーカス喪失後]プロパティをイベントプロシージャにして、ビルドボタンをクリックします。

③ 次のプロシージャを入力します。

	Private Sub 住所_LostFocus()
	On Error GoTo Err_go
		住所 = StrConv(住所, 8)
	go_Exit:
		Exit Sub
	Err_go:
		MsgBox Err.Number & ":" & Err.Description
		Resume go_Exit
	End Sub
    

※ [住所]はテキストボックスの名前になります。

※ StrConv関数は文字種を変換する関数です。引数は2つで、第1引数はフィールド名で、第2引数が変換内容になります。

変換内容 定数
小文字から大文字 vbUpperCase 1
大文字から小文字 vbLowerCase 2
先頭文字を大文字 vbProperCase 3
半角から全角 vbWide 4
全角から半角 vbNarrow 8
ひらがなからカタカタ vbKatakana 16
カタカナからひらがな vbHiragana 32

動作の確認では、[ビル名]にも同じプロシージャを作成した後の結果が図になります。

ビル名を確定して、カーソルが下の移動後に半角に修正されます。