- ベストアンサー
VBAでセルを参照した文字検索でシートをアクティブにする方法
- VBA初心者の質問です。ブックAのシート1のA1の値が、同じブック内の別のシートに存在するかどうか検索し、存在する場合はそのセルをアクティブにして黄色に色づけし、存在しない場合はメッセージを表示する処理をVBAで行いたいです。
- 参考にしたコードは、ブックBのシート1のA列から、ブックAのシート1のA1の値を検索するものです。検索方法は、値を完全一致で検索し、列ごとに順次検索しています。検索結果が見つからない場合は、「no data」というメッセージを表示します。
- しかし、このコードは期待通りに動作しません。正しくセルを検索してアクティブにする方法を教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >If ws.Name < AAA > "Sheet1" Then If ws.Name <> "Sheet1" Then こうでは? 上記のIf文がTrue(成立)にならないので変数:chがFalseのままになっているため、 MsgBox"no data"がでてしまうのかと。
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
参考にしたコードではなく、実際に作成し動かないコードを提示し且つどのように 上手くいかないのか書かれた方が宜しいかも。 例えるなら Sub try() Dim ws As Worksheet Dim r As Range Dim ch As Boolean ch = False For Each ws In Worksheets If ws.Name <> "Sheet1" Then Set r = ws.Cells.Find(Worksheets("Sheet1").Range("A1").Value, _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=True) If Not r Is Nothing Then ws.Activate r.Select r.Interior.ColorIndex = 6 ch = True End If End If Next If ch = False Then MsgBox "no data" Set r = Nothing End Sub こうゆう事なのかな?
補足
早速のご回答ありがとうございます 自分ではとても思いつかず、いくら考えてもダメだったと思います 検索するのはブックAAA の Sheet1 のセルQ13に入っているBBBという内容だとします Sub try() Dim ws As Worksheet Dim r As Range Dim ch As Boolean ch = False For Each ws In Worksheets If ws.Name < AAA > "Sheet1" Then Set r = ws.Cells.Find(Worksheets("Sheet1").Range("Q13").Value, _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=True) If Not r Is Nothing Then ws.Activate r.Select r.Interior.ColorIndex = 6 ch = True End If End If Next If ch = False Then MsgBox "no data" Set r = Nothing End Sub として試してみましたが 他のシートに BBB という単語があるにも関わらず no dataが出てしまいます 私にはこれで正しいように思えるのですが・・・・ どこがいけないのでしょうか・・・・
お礼
出来ました!! ありがとうございました!! 感激です、これで会社に役立てそうです!!! ありがとうございました!