• ベストアンサー

ACCESS VBA レコード位置をマウスで指定

いつもお世話になっています。 ACCESS のテーブルにデータ入力をしていますが、データ入力後、その各レコードをマウスで指定して別データを入力したいと考えています。 エクセルVBAであれば、SET RANGE = APPLICATION.INPUT() を使えばマウスで範囲指定ができると思うのですが、ACCESS でそういった方法はできないでしょうか? マウスでレコード位置を指定する方法があれば教えていただきたいです。 よろしくお願いします。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

すみません。デザインモードでなくデザインビューの誤りでした。 >クエリをデザインビュー?で開くと抽出条件…などの表示がされる状態です。 この抽出条件行に条件式を記述します。 添付は納品書、納品明細をリレーションして日付に【指定日】を抽出条件とした例です。 このクエリを開き指定日入力枠に日付を入力する指定日と一致する レコードのみが表示されます。 またこのクエリをレコードソースとしたフォームも指定日は有効です。 また抽出条件行に >=[開始日] AND <=[終了日] で日付の範囲指定も出来ます。

okwv-first
質問者

お礼

早速のお返事、ありがとうございます。 指定日で範囲が指定できたらいいのですが、 1日に数回データが追加され、その都度別データ入力が必要になるので マウスクリックで範囲指定ができたら・・・と思いました。 しかし、いろいろ探してもその方法がみつからないので 教えていただいた方法+αで対策を考えてみようと思います。 回答ありがとうございました。

その他の回答 (2)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

>1日に数回データが追加され、その都度別データ入力が必要になるので クエリの抽出条件は複数の項目に設定できます。 同一行は and 条件 行が変われば OR 条件です テーブルにyes/no型のフィールド(更新済 規定値 False)を追加して これを抽出条件にする方法もあります。 ※添付の更新済みの抽出条件を <>True としたのは過去のデータには規定値が 適用されないためです yes/no型はクリックでFalse→True True→False と入れ替わります フォームは単票形式でなく表形式ですね これだとスクロールできます。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.1

更新クエリでは如何ですか クエリをデザインモードで開き、 任意の場所を右クリックすると「レコードの更新行」が追加されます 抽出条件行で更新レコードを特定します

okwv-first
質問者

補足

回答ありがとうございます。 すみません、access 初心者のため回答の手順もよくわかりません。 クエリをデザインビュー?で開くと抽出条件…などの表示がされる状態です。 自分がイメージするのは、テーブルをフォームで開いて該当レコードを マウスでシフトを押しながら範囲指定…と考えています。

関連するQ&A

  • レコードの位置を指定するがうまくいきません

    よろしくお願い致します。 Access2007で、DAOを使用して以下の事を行っていますが、うまく動作しません。  一、rs.AddNewを12回繰り返してテーブルにレコードのみ作成しておく。     12回の意味は、縦に12項目分、横に時間フィールドを用意し、例えばA項目の10:00に     予定データが入っているイメージです。  二、他のテーブルから必要なデータを抽出し、rs.AbsolutePositionにデータ毎に     決まった位置を渡し、rs.Editで抽出データをセットしていきます。  三、全てのデータをセットし終えたら、フォームを表示し、そこに組み込んでいる     サブフォームにデータが所定の位置にキレイ並んでいる状態です。 エラーなく処理はされるのですが、フォームが表示されると実際の抽出データを違う位置に 予定が入っています。時間を表すフィールドは合っているので、AbsolutePositionに正しく 値が渡されていないのかなと思うのですが、順にコードをなめていくと入っているように 思います。コードは以下の通りです。 Do rsYotei.EOF Set rs = db.OpenRecordset("12レコードあるテーブル") rs.MoveLast rs.AbsolutePosition="入れたいレコードの位置" rs.Edit rs.Fields("入れたい時間").Value="予定データ" rs.Update rs.Close:Set rs=Nothing rsYotei.MoveNext Loop 以上です。 どなたかお知恵を拝借できれば幸いです。 よろしくお願い致します。

  • ACCESS,VBAで読込み位置指定はできますか?

    ACCESS,VBAで質問します。Aファイルを読み、Bファイルに出力します。この時、Aファイルのレコードが大量にあるので、開始位置を指定したいのですが、メソッドがわかりません。キーで指定できないでしょうか。MOVEFIRSTだけでしょうか。宜しくお願いします。

  • Excel VBA で二つのシートを比較して合致するレコードを別のシー

    Excel VBA で二つのシートを比較して合致するレコードを別のシートに抽出する方法 全然詳しくはありません。 やりたいこととしては、fax1,fax2,fax3のシートがありまして、 fax1:a列にfax_id fax2:fax1同様に、c列にfax_id のようなExcelのデータがあります。 ここから、fax1のシートのidを一つ一つ読み込みながら、fax2のidと比較して、合致したらfax3シートにコピーするようなプログラムを作りたいです。 やり方はいろいろあるみたいなのですが、どうしても下記の記述をベースに作ってみたいのですが、単純にfax1からfax3にコピーするのはわかるのですが、ここから先がよくわかりません。 基本的なことで申し訳ないのですが、どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。 Public Sub copy() Dim tempRange As Range Dim fax1Table As Range Dim fax2Table As Range Dim dst As Range 'fax1範囲指定 Worksheets("Fax1").Activate Set fax1Table = Range("a1").CurrentRegion Set fax1Table = fax1Table.Offset(1) Set fax1Table = fax1Table.Resize(fax1Table.Rows.Count - 1) 'fax2範囲指定 Worksheets("Fax2").Activate Set fax2Table = Range("a1").CurrentRegion Set fax2Table = fax2Table.Offset(1) Set fax2Table = fax2Table.Resize(fax2Table.Rows.Count - 1) '比較開始 Worksheets("fax1").Activate '見出しコピー Set dst = Worksheets("fax3").Range("a1") Range("a1:g1").Copy dst 'レコード抽出 For Each tempRange In fax1Table.Rows Set dst = dst.Offset(1) tempRange.Copy dst Next '比較終了 'セル幅自動調整 Worksheets("fax3").Range("a:g").Columns.AutoFit Worksheets("fax3").Activate End Sub

  • Accessのクエリでレコード追加

    Access初心者です。 バージョンは2010をつかっています。 テーブルを14テーブル含み、フィールド数が100ほどある選択クエリを作りました。 抽出条件などは設定していません。 このクエリで新しくデータを入力、レコードを追加し、上書き保存した後クエリを閉じます。 それからまた、そのクエリを開くとレコードが追加されていません。 テーブルにはその入力したデータは追加されています。 このクエリにもそのデータを追加表示させるためにはどうすればいいですか? 表示されない原因はなんなのかお教えお願いします。

  • Cell内の一部を指定する方法(Word VBA)

    Cell内の一部を指定する方法(Word VBA) Word VBAで、特定のCellの中の一部だけを指定するには、どうすればいいのでしょうか。 たとえば、ある表のCell(1, 2)の6~10文字目を指定して、そこだけを太字にするために、 Set Date1 = Table1.Cell(1, 2).Range(Start:=5, End:=10) としても、RangeメソッドはCellに使えないようなので、エラーになってしまいます。

  • Excel VBA Accessでデータ取り込み

    Excel VBA、Access VBAについてお教え下さい。 「My_Excel.xlsm」というファイルがあります。このファイルにはボタンが1つあります。 このボタンを押すことにより、「Imp_Excel.xlsx」というファイルを取り込みたいと思います。 取り込み先ですが、「My_Excel.xlsm」に取込むのではなく、Accessの「My_Access.accdb」の「T_MyTable」というテーブルに取り込みたいと思っています。 Accessから直に「Imp_Excel.xlsx」をインポートするには、TransferSpreadsheetを用いれば比較的簡単にデータをAccessに取り込むことができるのですが、「My_Excel.xlsm」をまたいでAccessに取り込みたいので、TransferSpreadsheetは使えません。 やり方としては、 My_Excel.xlsxを開く。 レコードセット取得。 レコードセットがEOFになるまでまわして、SQLのINSERT、またはAddNewメソッドを使用して1件1件挿入していくしか方法はないでしょうか? 今のところ、私が思い浮かぶのは上記の方法なのですが、何かもっと簡単にやれるような方法はあるでしょうか?よろしくお願いします。

  • ACCESSとVBAとレコード

    こんにちわ。 このサイトは何回も利用させて頂いてるのですが、今回も宜しくお願い致します。 環境はOS:Xp・Access2000です。 フォームを開くときにレコードを並べ替えたいのですが、単に「顧客コード」を昇順で並べ替えるには Private Sub Form_Load() Me.OrderBy = "顧客コード" Me.OrderByOn = True End Sub というのは解ったのですが、 何の関連付けもしてない、指定のテーブルの内容を並べ替えるにはどのように記述したらよいのでしょうか? 「Me」の箇所をそのテーブル名 (例えば、顧客テーブル.OrderBy = "顧客コード") のようにすれば良いのでしょうか? 宜しくお願いします。

  • エクセルVBAで範囲指定の方法をおしえてください

    エクセルVBAで範囲指定の方法をおしえてください こんばんは。 以下のようにデータがあるとします。 222 111 333 555 888 999 454 665 222 111の文字列を含むセルから888の文字列を含むセルまでをVBAで範囲指定したいのですが 方法がわかりません。 エクセルに読み込むファイルによって目的の情報の位置が変わるため、文字列を基に範囲指定したいのです。 本当に困っていますよろしくお願いします。

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

  • Accessでレコードの保存をVBAで

    Access2000です。 入力するとすぐに集計をしたいのですが、 フォームフッターの集計用テキストボックス (=sum([フィールド名])が設定されている) は、レコードを保存しないと、再計算されないようです。 そこで、入力して、フォーカスを喪失するときに DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 を実行して、レコードを保存しているのですが、 デバッグのとき、エラーが発生しますし、 (デバッグ中は、VBAエディタが表示されるため) また、メニューの実行のコマンドは物足りないので、 指定したフォームのレコードを保存する方法は、 他にないでしょうか? よろしくお願いいたします。

専門家に質問してみよう