• ベストアンサー

Access 最後のフィールドでカーソルをストップ

OS:Win7 Access2003 フォームをデータシートビューで開き、「タブの長押し」でフィールドを移動すると次のレコードに移動して行きます。 次レコードに移動せずに、カレントレコードの最後のフィールドで強制的に止めることはできますか? 宜しくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

設定だけで出来るかは不明です。 VBAでは下記のようにしてみてください。 フォームのプロパティのイベントタブの一番下にある 「キーボードイベントの取得」を、はい に。 「キークリック時」イベントに Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)   If Screen.ActiveControl.Name = rightCol Then     If KeyCode = vbKeyTab And Shift <> acShiftMask Then       KeyCode = 0     End If   End If End Sub その下にさらに、 Private Function rightCol() As String   Dim ctl As Control   Dim i As Integer      For Each ctl In Me.Controls     If TypeName(ctl) = "textbox" Then       If i < ctl.ColumnOrder Then         i = ctl.ColumnOrder         rightCol = ctl.Name       End If     End If   Next End Function Function rightCol は列の入れ替えを行って一番右端の列名(コントロール名)が 変更になった場合に対処するためです。 WinXP & Acc2002 Win7 & Acc2010 で検証。多分、Win7 & Acc2003でも? ※フォームがサブフォームであった場合はご勘弁ください。 Acc2010ではバグっぽい動きをします。原因追究断念。 ご参考まで。

afin
質問者

お礼

nicotinismさん ご回答ありがとうございます。 メインフォームなら動作したのですが、残念ながらがサブフォームだったので動作出来ませんでした。 次回メインフォームの機会がありましたら、参考にさせて頂きます。 ありがとうございました。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

Access2003は持ち合わせていないので確認は出来ませんが #1 で回答したコードとプロパティの設定を そのサブフォームに対して行えば出来るかと思います。 2002では問題ありませんでした。 (2010だと別の所で問題が発生したりしなかったりで??ですけど)

関連するQ&A

専門家に質問してみよう