- ベストアンサー
MSアクセス 表形式のフォームでカーソルキーを自由に
表形式フォームで、エクセルのようにカーソルキーで自由に、上のセル、下のセルに移動する方法はありませんか? 表形式だと、UPキーで右に移動するし、DOWNキーで左に移動しますよね。 データーシート形式だと、出来るんですが・・・・ せめて、UP,DOWNキーの動きを止めれないでしょうか? 。。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 > カーソルがトップに移動した後、そのまま今度は左右に移動するので ↑キーで右のフィールドに、↓キーで左のフィールドに移動するということですか? ACCESS2000ではそういう動きはしないので、バージョンのちがいによるものか、コチラの ACCESSがおかしいのか、いずれにしても検証できないのでご希望どおりになるかどうかわかりませんが、次のコードで試してみてください。 '-------------------------------------------------- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) On Error Resume Next Select Case KeyCode Case vbKeyUp If Me.CurrentRecord = 1 Then KeyCode = 0 Else DoCmd.GoToRecord , , acPrevious End If Case vbKeyDown If Me.NewRecord Then KeyCode = 0 Else DoCmd.GoToRecord , , acNext End If End Select End Sub '--------------------------------------------------- 要は、KeyCode = 0 とすれば、キー入力が無効になります。 試されたのが、No.1の参考URLにある、テキストボックスのイベントの方でしたら、コレを参考にコードを修正してください。 ( 上のコードでご希望どおりの動作になれば、ですが・・ ) ちなみにカーソルがどこにあろうが、↑と↓のキー入力を無効にするのは、次のようなコードでできると思います。 '---------------------------------------------------- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then KeyCode = 0 End If End Sub '-----------------------------------------------------
その他の回答 (1)
- shiotan99
- ベストアンサー率68% (140/203)
こんにちは~ ↑キーで前のレコード、↓キーで次のレコードに移動できるようにしたいってことですよね? VBAを使えば可能です。 下のコードで、ご希望どおりの動作になるか確認してください。 ( フォームのキークリック時イベント ) '------------------------------------------------ Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) On Error Resume Next Select Case KeyCode Case vbKeyUp DoCmd.GoToRecord , , acPrevious Case vbKeyDown DoCmd.GoToRecord , , acNext End Select End Sub '------------------------------------------------ ★フォームのプロパティ 「イベント」タブ <キーボードイベント取得>を 「はい」 にすることをお忘れなく!! ★フォームのイベントではなく、テキストボックスごとのイベントで行う場合は、参考URLをご覧ください。 この場合は、フォームの<キーボードイベント取得>を 「はい」 にする必要はありません。
補足
お答えの方法で、出来ました。 ありがとうございます。 贅沢を言いたいのですが、レコードのトップ(AcFirst?)まで、カーソルが移動したら、もうそこから動かない方法はないですか? お答えの方法だけでは、カーソルがトップに移動した後、そのまま今度は左右に移動するので・・・ レコードの最後(AcLast?)に移動したときも同様に。 レコードトップ(ラスト)にいったら、上下だけのカーソルキーをイベント受付拒否できませんか?
お礼
なんと、ありがとうございます。 コードまで書いて頂き、恐縮です。 KeyCode = 0 だけで、良かったんですね。 今度はもっと勉強します ==