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

VBA_Access

Accessで使える活用技

入力方法のヒントを表示させる

フォームにデータを入力する際に、入力方法のヒントや注意点などをその都度表示させることができます。何桁まで入力可能か、日付の入力指定などが分かりにくい時に、その旨のヒントが表示されれば入力ミスを防ぐことができます。

個々のコントロールを入力する時にヒントなどを表示させる場所は、フォームフッタに作成しておけあ、スクロールバーで上下しても常に表示することができます。

まず、用意するのはフォームフッタにラベルを作成します。ここでは、ラベルの[名前]プロパティは「hint」、[標題]プロパティは空白にします。

① ヒントを表示したいコントロールのプロパティシートを表示させます。

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

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

  Option Compare Database
  Private Const strHint As String = "見積NOは、5桁の数値で入力してください。"
  Private Sub 見積NO_Enter()
  	Me!hint.Caption = strHint
  End Sub
    

④ 次に同じコントロールの[フォーカス喪失時]プロパティを「イベントプロシージャ」にして、ビルドボタンをクリックします。

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

  Private Sub 見積NO_Exit(Cancel As Integer)
  	Me!hint.Caption = ""
  End Sub
    

※ [コード]ウィンドウの最上位に定数を「Constステートメント」を使って宣言します。ここでは、特定の入力欄を入力する際に表示させるヒントメッセージを定数(リテラル値)を指定しています。

※ ヒントを表示させたいコントロールにフォーカスが移動したら、ラベルの標題に定数を代入することによってメッセージが表示されます。

※ コントロールからフォーカスが次に移った場合は必ずその表示を消去しておく必要があるので、フォーカス喪失時にヒントの標題には、空白を意味する「""」と代入します。


動作を確認すると、「見積NO」テキストボックスにフォーカスがあるとフッタにヒントが表示され、フォーカスが別のコントロールに移動するとヒントが消えます。

フォームを2段切り替えで表示させる

フッタ領域に詳細情報を配置しておき、ボタンをクリックするごとにフッタを表示・非表示にすることができます。詳細セクションには最低限必要なコントロールを配置しておき、トグルボタンをクリックすることによって、詳細な情報が配置されているフッタを表示させる2段式のフォームを作成します。

ポイントは、ボタンはコマンドボタンではなく、トグルボタンで作成することです。

まず、フォームを開いた時はフッタ領域は非表示にしておき、フォームサイズを最適な大きさに自動調整する処理を作成します。

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

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

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

	Private Sub Form_Load()
		Me.Section(acFooter).Visible = False
		DoCmd.RunCommand acCmdSizeToFitForm
	End Sub
    

※ Visibleプロパティの値をFalseにすることによって、フッタを非表示にします。

※ RunCommandメソッドを使用して、定数acCmdSizeToFitFormを設定して、フォームのサイズを自動調整しています。

◆ RunCommandメソッド

組み込みメニューコマンドまたはツールバーコマンドを実行します。

【書式】

オブジェクト名.RunCommand (acCommandクラスの定数)

  • acCommandクラス:実行したい定数を指定します。
acCommandクラスの定数(ごく一部)
定数 説明
acCmdAppMaximize Accessウィンドウを最大化
acCmdCocMaximize オブジェクトの最大化
acCmdClose オブジェクトを閉じる
acCmdDeleteRecord フォーム上のレコードを削除する
acCmdUndo 元に戻す

④ 次に詳細セクションにトグルボタンを作成して、[名前]プロパティ、[標題]プロパティと[前景色]プロパティに任意の値を設定します。ここでは、[名前]プロパティと[標題]プロパティに「情報ボタン」と設定しています。

⑤ トグルボタンのプロパティシートを表示させ、[イベント」タブの[クリック時]を「イベントプロシージャ」にして、ビルドボタンをクリックします。

⑥ 次のプロシージャを作成します。

	Private Sub 情報ボタン_Click()
		If Me!情報ボタン.Value = False Then
			Me.Section(acFooter).Visible = False
			DoCmd.RunCommand acCmdSizeToFitForm
			Me!情報ボタン.Caption = "情報表示"
			Me!情報ボタン.ForeColor = vbBlue
			Me!顧客ID.SetFocus
		Else
			DoCmd.Echo False
			Me.Section(acFooter).Visible = True
			DoCmd.RunCommand acCmdSizeToFitForm
			Me!情報ボタン.Caption = "情報非表示"
			Me!情報ボタン.ForeColor = vbRed
			DoCmd.Echo True
			Me!郵便番号.SetFocus
		End If
	End Sub
    

※ トグルボタンは、押されていない時はValueプロパティには「False」を返し、押している時は「True」を返します。

※ トグルボタンが押されていない時(False)は、フッタを非表示にしてフォームを自動調整します。そして、トグルボタンの標題を「情報表示」にして、文字の色を青に設定し、詳細セクションの顧客IDにカーソルを移動させます。

※ トグルボタンが押されている時(True)は、フッタを表示してフォームのサイズを自動調整します。そして、トグルボタンの標題を「情報非表示」にして、文字の色を赤に設定し、フッタの郵便番号にカーソルを移動させます。

※ Echoメソッドを使って、画面表示を切り替える際に再描画しないようにして、画面切り替えの過程を非表示にしています。画面が小さいとあまり見た目は変化はありません。

※ フッタを開いたまた閉じて、再度このフォームを開くとトグルボタンの標題と文字色がフッタを開いた時の設定のままになっています。これを回避するために、「Private Sub Form_Load()」プロシージャに2行追加します。

	Private Sub Form_Load()
		Me.Section(acFooter).Visible = False
		DoCmd.RunCommand acCmdSizeToFitForm
		Me!情報ボタン.Caption = "情報表示"
		Me!情報ボタン.ForeColor = vbBlue
	End Sub
    

動作を確認します。一旦作成しているフォームと上書き保存をして閉じて、再び開きます。

3つのコントロールのみ表示されます。トグルボタンをクリックします。

フッタ領域が表示され、カーソルが郵便番号に移動します。また、トグルボタンの標題と文字の色も変わっていることが確認されます。