【AccessVBA】カーソルを任意のテキストボックスやボタンへ移動するコード

この次はここにカーソルが飛んで欲しい!という時ありませんか??

カーソルの移動の順番をしていするにはタブオーダーという機能を使ってできます。

では、実際にやってみましょう!!

まず、フォームをデザインモードで開きます。

次にデザインタブのタブオーダーをクリックします。(青く囲っているところです)

そうすると、『タブオーダー』という画面が出るので、こちらで順番を決めます。

上からの順序で動きます。

こちらの表に書いてある順番は13個あるんですが、一番初めは『0』からスタートなので、12番までとなります。

ちなみプロパティシートのその他タブからも『タブ移行順』というところで設定可能です。

どちらからでも使いやすいほうで設定してください。

次はVBAで任意のところに飛ばしてみましょう!!

VBAでカーソルを任意のところに飛ばす方法

別フォームからカーソルを任意のところに飛ばすときなどに便利な方法です。

『Me.テキストボックス名.SetFocus』だけなんです。

使用例としてはこんな感じになります。

VBAでカーソルを任意のところに飛ばすコード例
Private Sub 見積日付表記_Enter()

If IsNull(Me![担当者CD]) Then

MsgBox "担当番号を入力してください。(レジ担当番号)", vbYes

Me!担当者CD.SetFocus

Else

Me!見積日付表記.SetFocus

End If

End Sub

こちらのコードの意味は『見積日付表記』というテキストボックスにカーソルが来たときに、『担当者CD』テキストボックスが空欄なら、”担当番号を入力してください(レジ担当番号)”というメッセージボックスを表示して『OK』を押すと『担当者CD』テキストボックスに戻る。 『担当者CD』が入力されていたら、『見積日付表記』というテキストボックスにカーソルをセットフォーカスします。

別フォームからセットフォーカスする場合

別フォームからセットフォーカスする場合は、フォーム名をテキストボックス名の前つけてあげます。

例えば、『見積修正』フォームの『得意先名』というテキストボックスにセットフォーカスするなら…

Forms![見積修正].[得意先名].SetFocus

という感じになります。

サブフォームにセットフォーカスする場合は…

まず、フォームをセットフォーカスします。その後に、サブフォーム名、テキストボックス名を書きます。

続けて書くと下のような感じです。

Forms![見積修正].SetFocus

Forms![見積修正]![得意先名].SetFocus

サブフォームだとちょっと、え?どーするんだろう…?(;-ω-)ウーンって一瞬、悩んじゃったりするんですが、このように書けば大丈夫です。

それでは、今日はこの辺で。また~♪

関連記事