- ベストアンサー
Access 最後のフィールドでカーソルをストップ
OS:Win7 Access2003 フォームをデータシートビューで開き、「タブの長押し」でフィールドを移動すると次のレコードに移動して行きます。 次レコードに移動せずに、カレントレコードの最後のフィールドで強制的に止めることはできますか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
設定だけで出来るかは不明です。 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ではバグっぽい動きをします。原因追究断念。 ご参考まで。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
Access2003は持ち合わせていないので確認は出来ませんが #1 で回答したコードとプロパティの設定を そのサブフォームに対して行えば出来るかと思います。 2002では問題ありませんでした。 (2010だと別の所で問題が発生したりしなかったりで??ですけど)
お礼
nicotinismさん ご回答ありがとうございます。 メインフォームなら動作したのですが、残念ながらがサブフォームだったので動作出来ませんでした。 次回メインフォームの機会がありましたら、参考にさせて頂きます。 ありがとうございました。