ACCESS VBA GoToControlでカーソルを移動させる

GoToControlでカーソルを移動させる

ACCESSのフォームでメッセージを出した際に、ユーザーに次に入力する部分を明示するためにカーソルを指定のテキストボックスなどに移動させたい場合があります。

そんな時に利用できるのが、DoCmd.GoToControlメソッドです。

この記事では、ACCESSのフォームで、DoCmd.GoToControlメソッドを使って、指定のテキストボックスやボタンにカーソルを移動させる方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

DoCmd.GoToControlメソッド

フォームに配置されたテキストボックスやボタンを総称して、コントロールと呼びます。

フォーム上で任意のコントロールにカーソルを移動したいときに使用するのが、DoCmd.GoToControlメソッドです。

以下の構文で利用します。

DoCmd.GoToControl “コントロール名”

コントロール名だけを指定する単純な構文です。

ただし、指定可能なコントロールはその時点でアクティブなフォームだけに限られます。

別フォームのコントロールに移動させたい場合などは、DoCmd.OpenFormメソッドなどと組み合わせた工夫が必要です。

VBAでの利用例

実際にVBAで利用する例を示します。

DoCmd.GoToControlがよくつかわれるのはエラーチェックの処理かなと思います。

エラーをチェックしてエラーがあった場合は、警告メッセージを出すとともにエラーのある個所にカーソルを移動してあげるとユーザーには親切です。

この際にDoCmd.GoToControlが使われます。

サンプルとして以下のフォームを作成しました。

テキスト1、テキスト2の2つの入力欄があり、入力後にチェックボタンでチェックをするフォームです。

入力漏れがあった場合は以下のエラーが表示され、入力漏れ箇所にカーソルが移動します。

では作成方法を見ていきましょう。

フォームをデザインビューで作成します。

フォームデザイン

テキストボックスとボタンを以下のように配置しました。

チェックボタンにイベントを設定します。

チェックボタンを選択した状態でプロパティシートのイベントタブから「クリック時」を選択し、「・・・」ボタンを押してVisual Basic Editorを起動します。

チェックボタンのクリック時イベントには以下のプロシージャを設定します。


Private Sub チェック_ボタン_Click()

If IsNull(Me!テキスト1) Or Me!テキスト1 = "" Then

    MsgBox "テキスト1が入力されていません。", vbCritical + vbOKOnly, "テキスト1未入力"
    DoCmd.GoToControl "テキスト1"

End If

If IsNull(Me!テキスト2) Or Me!テキスト2 = "" Then

    MsgBox "テキスト2が入力されていません。", vbCritical + vbOKOnly, "テキスト2未入力"
    DoCmd.GoToControl "テキスト2"

End If

End Sub

If文が2つ連続する構成になっています。


 If IsNull(Me!テキスト1) Or Me!テキスト1 = "" Then

でテキストボックスが入力されているかどうかを判定しています。

何も入力されていなければメッセージを表示した後に、


 DoCmd.GoToControl "テキスト1"

でカーソルをテキスト1へ移動させるという処理をしています。

これをテキスト2にも同様に適用しています。

このように、DoCmd.GoToControlを使うとユーザーが次にどのコントロールを操作すればよいか示すことができ、操作性を高めることが可能です。

以上、GoToControlでカーソルを移動させる方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。