• ベストアンサー

MSアクセス 表形式のフォームでカーソルキーを自由に

表形式フォームで、エクセルのようにカーソルキーで自由に、上のセル、下のセルに移動する方法はありませんか? 表形式だと、UPキーで右に移動するし、DOWNキーで左に移動しますよね。 データーシート形式だと、出来るんですが・・・・ せめて、UP,DOWNキーの動きを止めれないでしょうか? 。。

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

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.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 '-----------------------------------------------------

situmonnsya
質問者

お礼

なんと、ありがとうございます。 コードまで書いて頂き、恐縮です。 KeyCode = 0 だけで、良かったんですね。 今度はもっと勉強します ==

その他の回答 (1)

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ ↑キーで前のレコード、↓キーで次のレコードに移動できるようにしたいってことですよね? 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をご覧ください。 この場合は、フォームの<キーボードイベント取得>を 「はい」 にする必要はありません。

参考URL:
http://www.tsware.jp/tips/tips_071.htm
situmonnsya
質問者

補足

お答えの方法で、出来ました。 ありがとうございます。 贅沢を言いたいのですが、レコードのトップ(AcFirst?)まで、カーソルが移動したら、もうそこから動かない方法はないですか? お答えの方法だけでは、カーソルがトップに移動した後、そのまま今度は左右に移動するので・・・ レコードの最後(AcLast?)に移動したときも同様に。 レコードトップ(ラスト)にいったら、上下だけのカーソルキーをイベント受付拒否できませんか?

関連するQ&A