dポイントプレゼントキャンペーン実施中!

表形式フォームで、エクセルのようにカーソルキーで自由に、上のセル、下のセルに移動する方法はありませんか?

表形式だと、UPキーで右に移動するし、DOWNキーで左に移動しますよね。
データーシート形式だと、出来るんですが・・・・

せめて、UP,DOWNキーの動きを止めれないでしょうか?

。。

A 回答 (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
'-----------------------------------------------------
    • good
    • 0
この回答へのお礼

なんと、ありがとうございます。
コードまで書いて頂き、恐縮です。

KeyCode = 0 だけで、良かったんですね。

今度はもっと勉強します

==

お礼日時:2005/10/05 22:32

こんにちは~



↑キーで前のレコード、↓キーで次のレコードに移動できるようにしたいってことですよね?
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

この回答への補足

お答えの方法で、出来ました。
ありがとうございます。

贅沢を言いたいのですが、レコードのトップ(AcFirst?)まで、カーソルが移動したら、もうそこから動かない方法はないですか?
お答えの方法だけでは、カーソルがトップに移動した後、そのまま今度は左右に移動するので・・・
レコードの最後(AcLast?)に移動したときも同様に。

レコードトップ(ラスト)にいったら、上下だけのカーソルキーをイベント受付拒否できませんか?

補足日時:2005/10/04 22:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!