• ベストアンサー

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

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

  • afin
  • お礼率54% (26/48)

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

  • ベストアンサー
  • 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

  • ACCESS サブフォームのフィールドにカーソルをあてる

    ACCESS2003で、VBAで簡単なプログラムを作っています。 <やっていること> ・フォームAからフォームBを開きます。 ・そのときにフォームAの番号と一致するデータをフォームBに表示します。 ・フォームBにはサブフォームCが埋め込んでいます。 このサブフォームCの中のフィールドDにカーソルが入っているようにしたいのですが、 Forms!サブフォームC!フィールドD.setfocus としたら、「カレントレコードには、フィールドDという名前のフィールドはありません」というエラーがでます。 フィールドDというフィールドは存在しています。 このような場合、どのように記述するのがよろしいのでしょうか。 よろしくお願いします。

  • Access フォーム上で最初のタブの位置をいつも同じフィールドに固定したい

    Access97および2000を使用しています。 フォーム上で新規入力するとき、タブの位置が直前に入力したレコードの最後のフィールドと同じフィールドに来ています。  これを新規レコードを開いたら必ずタブは特定のフィールドにくるようにしたいのですが・・・。

  • フィールドの移動について

    Access2002を使っています。 データシートビューでフィールドを移動していましたが、移動できないフィールドもあります。これはどうしてでしょうか? 数値型などはフィールドを移動できないのでしょうか? 教えてください。

  • Access 連結フィールド値を自動で表示

    Accessでフォーム上にサブフォーム(データシート)を作成すると、 新規レコード欄にも自動的に連結フィールドの値が表示されます。 このサブフォームをメインフォーム上に作らずに、 コマンドボタンクリック時にあるフィールドが一致する(上記で言う連結フィールド)データを表示したサブフォーム(データシート)を開くかたちにしたいのですが、そうすると当然ながら新規レコード欄には連結フィールドの値は表示されません。 これをメインフォーム上にサブフォームを作った時と同じように、新規レコード欄に連結フィールド値を表示させるにはどうしたら良いでしょうか? サブフォームを開く段階で新規レコードに結合フィールドの値を(VBAで)入力する事も考えましたが、そうするともしそこにデータを入れるつもりじゃなくても1つのレコードとしてデータが残ってしまいます。 メインフォーム上に作ったサブフォームなら、新規レコードに結合フィールドの値は表示されているものの、その他のフィールドにデータを入力しなければ1つのレコードとしてデータが残ることはありません。 こういう事が可能かどうかわかりませんが、ご存知でしたら教えてくださいませ。 よろしくお願いします!

  • 私のアクセス2003だけなのかわからないので教えてください。

    フォームのデータシートビューの状態で、文字に色を付けたいのですが デザイン時にテキストボックスのプロパティの前景色を255にしても 色がつきません。 フォームビューにすれば色が付きます。 ただ、条件付書式で 「フィールドの値 次の値に等しくない ""」にすれば データシートビューでも全てのレコードに色が付きます。 これは仕様ですか? 何かわかる方よろしくお願いします。

  • Access 2010 分割フォームのフィールド幅

    Access2010で分割フォームを作りました。 分割ビューのデータシート部分のフィールド幅を記憶させることはできるのでしょうか? 幅を変えても、フォームを閉じてから開きなおすと、元の幅に戻ってしまいます。 フォームのプロパティをいろいろ変えてみたのですが、どうもうまくいきません。 どなたかご存知でしょうか?

  • ACCESS2007のクエリについて

    ACCESS2007のクエリについて ACCESS初心者です。 よろしくお願いします。 クエリを作成するときに、デザインビューでフィールドの位置を変更したり、 (たとえば、「氏名」の列を4列目から2列目に移動する) 並べ替えなどをして、データシートビューにすると反映されているのに、 データシートビューでフィールドの位置を変更したり、並べ替えなどをしても、 デザインビューには反映されてませんが、 クエリとはこういうものなのですか?

  • Access2000(>_<)

    Access2000を使っています。 既存のデータベースからレコードを削除できないように設定したいと思っています。 そこで、フォームのデザインにて、フォームのプロパティを開き、「データ」タブで「削除の許可」を「いいえ」にしてから閉じてみたのですが、試しにテーブルでレコードを削除してみると、削除できてしまいます。 再びフォームのプロパティを見ると、「削除の許可」が「はい」に戻っています。変更が保存されていないようです。 同様に、特定のフィールドの上書きを禁止したいので、同じくフォームのデザインで、上書きを禁止したいフィールドのテキストボックスのプロパティの「データ」タブにて、「編集ロック」を「はい」にしてから閉じましたが、この変更も保存されておらず、編集ができるままの状態です。 どうすれば変更を保存できるのでしょうか…。 またほかに、レコードの削除を禁止する方法、特定のフィールドのみ上書きを禁止する方法があれば教えてください。初心者なのでわかりやすく教えていただけると助かります。よろしくお願いします。

  • Access フォーム タブオーダー

    サブフォーム付のフォームを作成しましたが、主フォームから サブフォームに移動する最、移動位置が正しくないのですが この設定はどのようにするのでしょうか? フォームの最後のボックスから移動した場合 サブフォームの先頭レコードの最後のフィールドに移動してしまいます。 最後から三番目のフィールドに移動させたいです。 タブオーダでEnterやTabキーで移動場所の設定はできますが 矢印キーで自由に移動できるように設定できないのでしょうか?

  • Accessでの新規レコードの追加の方法

    Windows XP上でMicrosoft Access 2000を使用しています。 オートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加したいのですが、クエリやそれを基にしたフォームを介した方法はもちろんのこと、テーブルをデータシートビューで表示した状態でも追加することができません。 例えばレコードセレクタからレコード追加を選んでレコード保存を選んでも追加されません。 このテーブルに別のフィールドを追加してデータを入れるとレコードの追加が可能なのですが、オートナンバー型フィールド1つのみではうまくいきません。 どなたかオートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加する方法を御存知でしたら御教示下さいませ。

専門家に質問してみよう