• ベストアンサー

アクセスVBAでデータを検索したいのですが、

アクセスVBAでデータを検索したいのですが、 エクセルVBAのcells(i,1)にあたるようなものはないでしょうか。 添付画像のような信号を抽出したいので、立ち上がりの部分をさがしたいのですが。 ご存知のかた教えてください。 i=1 Do until cells(i,1)>=4 i=i+1 Loop 開始レコード=i データテーブルの1列目は行番号、2列目は信号が入っています。

  • ddtqp
  • お礼率68% (139/203)

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

このようなものでよければ。 tblTはテーブル名。 '参照設定でDAOにチェック Sub cmdSearch() Dim db As Database Dim rs As Recordset Dim pt As Long Set db = CurrentDb Set rs = db.OpenRecordset("tblT", dbOpenDynaset) rs.MoveFirst Do Until rs.EOF If rs!信号 = 4 Then MsgBox ("見つかりました") Exit Do End If rs.MoveNext Loop End Sub rs!信号 = 4 の検索条件の設定はいろいろ 工夫すれば任意に設定できますが、そのとき はまた質問されたらと思います。 検索の仕方はまだいろいろあります。 WEB上に山ほどあります。 では。

ddtqp
質問者

お礼

ありがとうございます! rs!信号で列が指定できるんですね。 助かりました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

VBAだけを考えていましたが、 選択クエリに条件を設定して 検索すればVBAを使うより 簡単です。 これも検討してみてください。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

コードの最初の部分で Dim pt As Long としていますが、この変数は使って いません。 このソースを標準モジュールに貼り付け、 イミディエイトウィンドウでcmdSearchを 実行してみてください。もちろんテーブルも つくっておく必要があります。 これだけのコードでは敷居が高すぎる かもしれません。しかし、慣れてくると 非常に重宝します。 では。

関連するQ&A

  • 2重のDo~Loopは?

    Excel VBAですが、A列にデータが入っています。 A列のデータが変わるまで 処理1 を実行し、変われば 処理2 を実行する。データがなくなれば終了する方法が分りません。宜しくお願いします。 i = 2 Do Until Cells(i, 1) = "" Do Until Cells(i, 1) <> Cells(i - 1, 1) 処理1 Loop 処理2 Loop

  • VBA

    VBA データを最後の行まで読むのに do until worksheets("sheet1").cells(a,1) = ""     a = a+1 loop と、かっこ悪いプログラムで作成してるのですが もっとかっこいいプログラムありますか?

  • VBA 九九 Do While

    VBAのDo Whileステートメントを使って九九の表をつくりたいのですが、何度やっても途中で詰まり、実行に至りません。 For NextとDo untilではできたと思うのですがDo Whileがどうしてもわからなくて… どなたか助けてください。お願いします。 Sub 九九計算_for() Dim i, j As Integer For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = i * j Next Next End Sub Sub 九九計算_do_until() j = 1 Do i = 1 Do Cells(j, i).Value = i * j i = i + 1 Loop Until i = 10 j = j + 1 Loop Until j = 10 End Sub

  • エクセルVBAの繰り返し処理の質問

    C列にある項目とG列にある項目を比較して、 一致し、H列にある数字が10以上ならば、B列にフラグ1を立てる という処理を行いたいんですが、 下記ぐらいまでしか作れず、うまくいきません・・・ Sub フラグを立てる処理() Dim i As Integer Dim j As Integer Dim k As Integer i = 1 j = 1 Do j = j + 1 Do i = i + 1 If Cells(j, 8) > 9 Then Cells(i - 1, 4) = 1 End If Loop Until Cells(i, 3) <> Cells(j, 7) Or Cells(i, 3) = "" Loop Until Cells(j, 7) = "" End Sub わかる方がいらっしゃいましたら、お願いします。

  • VBAで空欄にデータに表示

    エクセルVBAのIFを使って、シートaのA列に値があって、B列が空欄の場合のみ、空欄のセルにシートbの値を表示させたいです。 上手くできませんでしたので、教えてください。 Sub Do文2() Dim i As Integer i = 1 If Worksheets("a").Cells(i, 2) = "" Then Do While Worksheets("a").Cells(i, 1) <> "" Worksheets("a").Cells(i, 2) = Worksheets("b").Cells(1, 1) i = i + 1 Loop End If End Sub

  • エクセルVBAで、文字列の検索方法について

    先日、こちらで教えていただいたVBAがあります。 E列のセルの文字列の末尾が「計」のものを検索し、その行に色をつけるものです。 Sub iroiro() Dim x, y x = 1 Do If Right(Cells(x, 5), 1) = "計" Then For i = 2 To 5 Cells(x, i).Interior.ColorIndex = 3 Next End If x = x + 1 Loop Until Right(Cells(x, 5), 1) = "" End Sub これはばっちりで、助かっているのですが、今度は末尾ではなく、文字列中に「営業」という文字があるのを検索し、色をつけたいのです。 If Right(Cells(x, 5), 1) = "計" Thenを どう変えればいいのでしょうか?

  • VBA ループ文

    お手数ですが、回答お願いします。 VBAでループ文を勉強しております。 最初のfor 文で1000行、1000列に文字を入力、 次のdo 文でその文字を全部消したいのですが、うまくいきません。 またfor 文で1000行、1000列で文字を入力しているのですが、 時間がかかるのは仕方がないことなのでしょうか? お手数ですが、ご教授お願いします。 Sub 文字入力() Dim i As long Dim t As long For i = 1 To 1000 For t = 1 To 1000 Cells(i, t) = "wooo" Next t Next i End Sub ================================================================= Sub 文字入力消し() Dim i As long Dim t As long i = 1 Do t = 1 Do Cells(i, t) = "" t = t + 1 Loop Until Cells(i, t) = "" i = i + 1 Loop Until Cells(i, t) = "" End Sub

  • GetOpenFilenameを使用し、複数行のデータを抽出について

    エクセルVBA初心者です。 いろいろ調べましたが、うまくいかずご教授頂ければとお聞きします。 よろしくお願いします。 テキストファイル10万行からなるデータが入っています。 「aaa」と文字列を検索し、その下10行を抽出したいのです。 Sub 抽出() fname = Application.GetOpenFilename(FileFilter:="(*.*),[*.*]", Title:="data?", MultiSelect:=False) if fname For Input As #1 Do Line input as #1 If InStr(data, "aaa") > 0 Then For i = 1 To 10 Cells(i, 1).Value = data Next End If Loop Until EOF(1) Close #1 End Sub

  • ExcelVBAでAccessのデータを検索する

    Excel  VBA で、ADOを用いてAccess のデータを検索するにはどうしたらいいですか。 やりたいこと 検索結果を、Excel のセルにコピーすること。 ソースコード 'MDBファイルに接続します Set db = New ADODB.Connection db.Provider = "Microsoft.Jet.OLEDB.4.0" db.Open "C:\Database\test.mdb" 'レコードセットを開きます Set rs = New ADODB.Recordset 'テーブルを開きます rs.Open "PT_MST", db, adOpenForwardOnly, adLockReadOnly findName = ws.Cells(i, 1) & ws.Cells(i, 2) Do ' rs.Find "[S_NUM]='" & findName & "'" rs.Find rs.Fields(1).name & " Like '20k%'"  ← ここで、サポートしていない旨のエラーが出る。 If Not (rs.EOF) Then Debug.Print rs.Fields(1).Value Else Exit Do End If rs.MoveNext Loop Until rs.EOF '閉じる rs.Close db.Close '終了処理 Set rs = Nothing Set db = Nothing どう直したら、検出結果を取得できますか。 ご教示下さい。

  • Excel VBAで、セルに入ってるデータ型を調べる方法は?

    現在、Excel VBAでプログラムを作成しています。 Do Until ~ Loop の終了条件を アクティブセルに入っているデータの型が文字列型の時 としたいのですが、そのようなことは可能なのでしょうか? 可能だとしたら、どのように記述したらいいのでしょうか? 当方のPCは Win XP、Excel2003 です。 よろしくお願いいたします。

専門家に質問してみよう