Version:2000こんにちは。ACCESS暦3ヶ月のジャスミンです。初歩的な質問ですみません。データ入力用の単票形式フォームAで、移動ボタン、スクロールバーともに非表示にしているのですが、新規レコード入力中に(その時点で最後のレコードになりますが)マウスのスクロールボタンをいじると、新規レコードに移動してしまいます。新規レコードは登録コマンドボタンをおすと、入力必須項目が空欄の場合は入力を促すメッセージボックスが出て、入力が完了すると続けて登録するか聞いて来るメッセージボックスが出て、「はい」にすると新規レコードに移動する、という仕組みにしています。登録ボタンを押さない限り次の登録作業に進めなくしたいのですが、誤ってマウスをいじってしまうと新規レコードに移ってしまうのです。したらこういったことを防げるのでしょうか。はじめにマウスのスクロールボタンの制御は難しいと思います。※出来ないことはないらしいですが...APIからの制御などで、代替案なのですがフォームの「追加の許可」で制御します。遡りには対処してません。Subこれを入れます。Subを入れることで対処します。これを「次へ」「Next」等のコマンドボタンを作成して充ててもいいと思います。hainz090です。移動ボタン以外では移動できないプログラム作ってみました。いかがですか?(プログラム内の[]の部分はmdbにあわせて変えて下さいね。)以下はフォームに貼り付けるプログラムです。'******マウスホイール無効化******'利口な方法ではありませんが、専用の移動ボタンを使ったときのみ'フラグを立て、フラグONのときは移動を許可しレコード移動後にフラグOFFにします。'それ以外の方法で移動したときは強制的にもとのレコードへ戻ります。'マウスホイールの情報(API使用による)はいじくらないので、mdbの安定性が損なわれる'ということも無いかと思います。(簡単なコードなので)。'但し、挙動は一度移動してから戻る形ですから、レコード等は保存されて'しまうのでそれなりの処理を施す必要があるかもしれません。'flg_nomouseは不可視のチェックボックス(非連結)としてフォームに用意します。Sub〜)より'上に記述します(モジュールレベル変数)。Form_Current()'レコード移動時に最初のレコードであれば'戻るボタンを、最後のレコードであれば'進むボタンを使用不可にする。クロさん、いつもありがとうございます。hainz090さん、はじめまして。ありがとうございます。今日はACCESSで作業できる環境にないので、明日、ゆっくり試してみたいと思います。同じトピックで既に投稿させて頂いていてレスも頂いてましたが、すっかりこちらからの回答が遅くなってしまい、且つ、新たな展開があったのでパート2として新トピで掲載させて頂きました。クロさん、hainz090さん、お待たせしてごめんなさい。他業務に追われてACCESSに迎えなかった日々からやっと脱出です。先日hainz090さん案でトライしてみたところ、エラーが出てしまいました。入力フォームの設計を一部変更しようと思ってまして。同フォームは、「全件クエリ」をレコードソースとし、「全件クエリは」「全件テーブル」と「相手先マスタ」を、後者の「相手先コード」というフィールドでリレーション組んでいるものです。「相手先マスタ」の構成は、*「相手先コード」(オートナンバー)、*「検索用」(テキスト)、*「相手先」(テキスト)のという3つのフィールドからなっています。「検索用」とは、別の検索用フォームで相手先を検索する際の検索速度を上げるため、相手先をマスタ登録する際に「あ、か、さ、た、な...ABC、DEF、GHI、...」に分類して登録するように設けたものです。現状は、「相手先コード」コンボボックス(3つのフィールドすべてをリスト表示)から相手先を選択したら、相手先コードが入力され、「相手先」テキストボックスに相手先名が代入されるという仕組みになっています。この「相手先コード」コンボボックスをリストボックスに変えて、且つ、リストに表示される内容をオプショングループのトグルボタンで抽出するという方法に変えたいのです。リストボックス表示されるのは、「相手先」(名)だけでいいのですが、コントロースソースは相手先コードとし、「選択」というコマンドボタンを押したら相手先コードが入力されて、やはり「相手先」テキストボックスに相手先名が代入されると。前置きが長くなりましたが、とりあえずリストボックスとオプショングループとトグルボタンを配置してみたところ、マウスのスクロールボタンにはフォームではなくリストが反応するようになったんです。これはたまたまですか?もしリストボックスを置くことでレコード移動が防げるのであれば一石二鳥なのですが。いずれにしてもまずはこのリストボックスとオプショングループを作成したく、途中まで取り掛かってみました。Subと入れると、トグルボタンを押すごとに全件クエリのレコードがフォーム上で抽出されてしまいます。Me.Filterの部分をリストボックスのColumn(1)の検索用に置き換えればうまくいくのでしょうか。書き方を教えてください。前述の選択ボタンを押したら選択した相手先がコードで「相手先一覧」リストボックスに入力され、「相手先」に相手先名が代入されるようにするにはどうしたらいいのでしょうか。何から何まで聞いてしまって申し訳ないのでうが、早急に改良を迫られていまいして。他にも改良したい点がありますので新トピで投稿します。あ、新規投稿しないと、タイトルを変えただけでは新トピにはならないのですね(恥)。新着記事にあがったのでクロさん、hainz090さん、ご覧頂けてるでしょうか。そんなに一度に投稿されないほうがいいと思います。流れを簡潔に書いてください。フレームのオプションを選択→リストボックスの値集合ソースが絞り込まれる→リストボックスで選択→フォームの新規レコードの相手先コードに相手先コードが代入されるでいいのですか?ジャスミンさんが書かれたフレームのコードはフォーム自身にフィルタするものです。フレーム2」ではダメです。Me.フレーム」です私が書いた流れでいいのならフレームのオプションを選択することでリストボックスの値集合ソースを絞り込むなら以下のようにしてください。Subこれで絞り込まれると思います。>フォームは、「全件クエリ」をレコードソースとし、「全件クエリは」>「全件テーブル」と「相手先マスタ」を、後者の「相手先コード」という>フィールドでリレーション組んでいるものです。質問なんですが全件テーブルの相手先コードのデータ型は何?数値型として話を進めます。Subと書いてください。それとフィルタを使用する場合は通常レコードは全件表示されます。フレーム2」ではダメです。Me.フレーム」です間違えてる...逆です。フレーム」ではダメです。同フォーム上に同じコントロール名があるとダメなのでリストボックスの「相手先コード」の名前を「list相手先コード」にしてください。フレーム2_Click()のイベントの「Me.相手先コード」は「Me.list相手先コード」と変えてください。hainz090です。私もクロさんと同意見です。わけがわからなくなってしまいました。ちなみに、リストボックスではレコード移動はしませんが、他のコントロールにフォーカスのある状態だとレコード移動してしまいます。どこでエラーが発生したのでしょうか??また、抽出ですが検索はコード(数値型)で持った方がいいように思います。2以下同様に......。オプショングループは数値型で値を持っていますからそのほうが走るプログラムは分岐せず簡単で済みますよ。後の拡張(検索条件が増えたとき)も簡単に出来ますし。Subまたコード、相手先をデータとして両方持つ必要はあるのでしょうか?DBの正規化についても検索してご覧になってみて下さいね。