• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:帳票形式のフィールド入力の時、TABオーダーで同一列の下のフィールドに)

バーコードリーダーを使用した帳票形式のフィールド入力方法について

このQ&Aのポイント
  • バーコードリーダーを使用した帳票形式のフィールド入力の際、同一列の下のフィールドに移動する方法についてアドバイスをいただきたいです。
  • 質問者はバーコードリーダーで管理コードを順次入力したいと考えており、最適な入力方法を知りたいとしています。
  • 希望としては、バーコードリーダー入力が終わった後に次の管理コードフィールドに自動的に移動する方法が望ましいです。もしくは、バーコードリーダーで値を入力した後にTABキーもしくはEnterキーを押すと次の管理コードフィールドにカーソルが移動する仕組みを作りたいということです。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> ↓のように帳票形式で表示しているテーブル フォームの帳票形式を使用して、テーブルのデータを表示 されている、ということでよろしいでしょうか。 そうであれば、 > TABキーやEnterを押すと次の管理コードフィールドに > カーソールが移動する については、フォームの(コントロールの)設定で対応可能です。 (なお、バーコードリーダーは使用したことがないため、No.1の方と  同様、バーコードの読み込みを拾う方法はわかりません(汗)) 1)フォームをデザインビューで開く 2)適当なところをダブルクリックするなどして、プロパティシートを  開いておく 3)EnterキーやTabキーで移動したくないコントロール(テキスト  ボックス)を選択 4)プロパティシートの『その他』タブを選択し、『タブストップ』の  項目を「いいえ」に設定 5)「3~4」の操作を必要なだけ繰り返したら、フォームを保存  して閉じる ・・・以上で、最初の入力時に『管理コード』に移動しておけば、 後はEnter/Tabで次のレコードの管理コードにカーソルが移動 するようになります。 (なお、Shift+Tabの同時押しで前のレコードの管理コードに、 また、F6キーでヘッダ・フッタのコントロールに、それぞれ移動 できます(→移動可能なコントロールがある場合)。) なお、「3~4」を繰り返し、と書きましたが、デザインビューで 何もコントロールがないところをクリック&ドラッグしたときに表示 される四角形で複数のコントロールを囲むと、囲んだコントロール が一括で選択されます。 また、複数のコントロールを選択する別の方法として、Shiftキー を押したまま、対象コントロールを順次クリックしていく、という 方法もあります(間違えて選択した場合は、Shiftキーを押した まま再度クリックすれば解除が可能)。 この状態にしてやれば、「4」の操作は複数コントロールで一括 で指定できますので、参考まで。 (但し、種類の異なるコントロールを同時選択すると、必要な  項目がプロパティシートに表示されなくなる場合があります  ので、ご注意下さい:  今回の例では、ラベルなど、タブ移動の対象外のコントロール  が同時に選択されてしまうと、『その他』タブに『タブストップ』の  項目が表示されなくなってしまいます) ※バーコード読み込み時は『管理コード』のみの移動にしたいが、  通常の入力時は商品IDなども移動可能でないと困る、という  場合は、マクロ/VBAを使用して設定を切り替えてやることに  なります。  (例えばフォーム フッタにオプショングループを設置し、その更新   後イベントで、商品ID等の「TabStop」プロパティをTrue/False   に切替、と)

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

Enterキー、Tabキーで移動する方法になりますが、以下でどうなりますか。 管理コードのキークリック時イベントを使います。 Private Sub 管理コード_KeyDown(KeyCode As Integer, Shift As Integer)   If ((Shift = 0) And (Not Me.NewRecord)) Then     Select Case KeyCode       Case vbKeyReturn, vbKeyTab         KeyCode = 0         With Me.Recordset           If ((.AbsolutePosition + 1) < .RecordCount) Then             .MoveNext             Me.管理コード.SetFocus           End If         End With     End Select   End If End Sub ※     If ((.AbsolutePosition + 1) < .RecordCount) Then       .MoveNext       Me.管理コード.SetFocus     End If では、最終行にある時には移動しません。 新規登録行があって、その行に移動して良いのなら、     If ((.AbsolutePosition + 1) < .RecordCount) Then       .MoveNext     Else       .AddNew     End If     Me.管理コード.SetFocus になると思います・・・ ※ バーコードの入力をどのイベントで拾えるのか、チョットわからないので、 変更時イベントで一気にとれるのなら、 Len(Me.管理コード.Text) > 0 とかの判別で、上記 With 部分を実行しても??? ※ レコードが登録されるタイミングは、.MoveNext ( .AddNew )の箇所になるので、 入力チェック等でエラーがある場合には、エラーが発生すると思いますので、 いろいろ対策をとってみてください。

関連するQ&A