- ベストアンサー
バーコードリーダーを使用した帳票形式のフィールド入力方法について
- バーコードリーダーを使用した帳票形式のフィールド入力の際、同一列の下のフィールドに移動する方法についてアドバイスをいただきたいです。
- 質問者はバーコードリーダーで管理コードを順次入力したいと考えており、最適な入力方法を知りたいとしています。
- 希望としては、バーコードリーダー入力が終わった後に次の管理コードフィールドに自動的に移動する方法が望ましいです。もしくは、バーコードリーダーで値を入力した後にTABキーもしくはEnterキーを押すと次の管理コードフィールドにカーソルが移動する仕組みを作りたいということです。
- みんなの回答 (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)
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 )の箇所になるので、 入力チェック等でエラーがある場合には、エラーが発生すると思いますので、 いろいろ対策をとってみてください。