• ベストアンサー

VBA ブック内文字列検索

はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 文字列"AAA"で、ブック内の全シートに検索を行い ヒットしたシート名を変数配列BBB(15)に順次格納していく コーディングを考えていますが、実装方法がわかりません。 不明点 ・ブック内検索方法 ・ヒットしたシート名を配列に格納する 大変恐縮ですがコーディング等を明記して頂ける助かります。 よろしくお願い致します。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

一例まで。 Sub try() Dim ws As Worksheet Dim i As Integer, j As Integer Dim BBB() As Variant i = 0 For Each ws In Worksheets If Application.CountIf(ws.Cells, "AAA") > 0 Then i = i + 1 ReDim Preserve BBB(1 To i) BBB(i) = ws.Name End If Next For j = 1 To i Debug.Print BBB(j) Next End Sub

c_gen
質問者

お礼

n-jun様、merlionXX様 どちらも完璧な回答でした。とても助かりました。 誠にありがとうございました。 >merlionXX様 評価の方ですがレスが早い順に付けさせて頂きました。 申し訳ありません。

c_gen
質問者

補足

回答有難うございます。 実装してましたところ、動作を確認できました。 追加の仕様なのですが 今は完全一致のセル「AAA」のみのヒットですが セル「CCCのAAAはBBBだ」もヒットするようにするにはどうすればよいでしょうか。 大変申し訳ありませんが、ご教授願いたく思います。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No2 merlionXXです。 部分一致検索にするなら LookAt:=xlWhole を LookAt:=xlPart に変えてみてください。

c_gen
質問者

お礼

動作を確認できました。 有難うございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1です。 >If Application.CountIf(ws.Cells, "AAA") > 0 Then If Application.CountIf(ws.Cells, "*AAA*") > 0 Then としてみて下さい。

c_gen
質問者

お礼

動作を確認できました。 有難うございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

一例です。 Sub test01() Dim st As Worksheet Dim c As Range Dim myStr As String Dim BBB For Each st In Worksheets Set c = st.Cells.Find(What:="AAA", LookAt:=xlWhole) '各Sheetを完全一致検索 If Not c Is Nothing Then 'あったら myStr = IIf(myStr = "", st.Name, myStr & "/" & st.Name) '/で区切り一旦文字列変数に End If Next BBB = Split(myStr, "/") '/で分けて配列に MsgBox Join(BBB, "、") & "を配列に取り込みました。" End Sub

c_gen
質問者

お礼

n-jun様、merlionXX様 どちらも完璧な回答でした。とても助かりました。 誠にありがとうございました。 >merlionXX様 評価の方ですがレスが早い順に付けさせて頂きました。 申し訳ありません。

c_gen
質問者

補足

回答有難うございます。 実装してましたところ、動作を確認できました。 追加の仕様なのですが 今は完全一致のセル「AAA」のみのヒットですが セル「CCCのAAAはBBBだ」もヒットするようにするにはどうすればよいでしょうか。 大変申し訳ありませんが、ご教授願いたく思います。