エクセルVBAでの検索機能について
未読分:2件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#2 2015年2月6日(金)01時00分 From: ロンギヌス | 返事 削除 変更 |
Aシートの全体から検索ですか? それとも特定の範囲を検索ですか?例えばA列のみとか。 一例です。 一応提示されたコードを参考にして、見つけたら次回はその行は検索せずに次の行のA列から検索しています。 もし全体検索がよければ、◎のところを以下に変えてください。 Set temp = SC Sub Sample() Dim SC As Range, myRng As Range, ID As Range, temp As Range, Trg As Range Dim ShA As Worksheet, ShB As Worksheet Set ShA = Worksheets("Aシート") Set ShB = Worksheets("Bシート") '1行目の最終列を格納(Afterで指定するとA2から検索されることになる) Set temp = ShA.Cells(1, Columns.Count) 'シートのA2を選択してCtrl+↓を押してみてください。A2からそこまで格納します。この範囲が検索範囲になります。 Set myRng = ShB.Range("A2", ShB.Range("A2").End(xlDown)) For Each ID In myRng Set SC = ShA.Cells.Find(what:=ID, _ after:=temp, _ LookIn:=xlValues, _ lookat:=xlWhole, _ MatchByte:=False, _ SearchFormat:=False) '見つけ次第Trgに全て格納していく If Not SC Is Nothing Then If Trg Is Nothing Then Set Trg = SC Else Set Trg = Union(Trg, SC) End If '◎見つけたセルの一つ下の行のA列から検索する為に、最終列を格納しておく◎ Set temp = ShA.Cells(SC.Row, Columns.Count) End If Next ID If Not Trg Is Nothing Then Trg.Interior.Color = 49407 Else MsgBox "見つかりませんでした。" End If End Sub |
Message#1 2015年2月5日(木)23時12分 From: arg135 | 返事 削除 変更 |
エクセルのVBAをあるキーワードの検索を行いたいと考えています。 Sheets1シートのリストの中からSheets2シートの商品を検索して見つかった 色をかえるというものです。 マクロの記録から行うのはできたのですが、そこからカスタマイズする方法が分かりませんでした。 おそらくループ処理でまわしていくのだと思うのですが、For〜Next文が苦手でいまいちわかりません。 解決策ありましたら教えてください。 Sub sample() Sheets("Sheets2").Select Dim i As Long, cnt As Long, oRange As Range i = 2 Set ID = Worksheets("Sheets2").Cells(i, 1) Do While Worksheets("Sheets2").Cells(i, 1) <> "" Sheets("Sheets1").Select If ID Is Nothing Then Worksheets("Sheets1").Cells.Find(what:=ID _ , After:=Worksheets("Sheets1").Cells(i, 1) _ , LookIn:=xlValues _ , LookAt:=xlWhole _ , SearchOrder:=xlByRows _ , SearchDirection:=xlNext _ , MatchCase:=False _ , MatchByte:=False _ , SearchFormat:=False).Activate If ID Is Nothing Then Else ActiveCell.Interior.Color = "Red" i = i + 1 Loop End Sub |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降