電子書籍の厳選無料作品が豊富!

以前にこちらでFind Nextを教わり大変ためになりました。以前は検索したいものが一つ で検索範囲には検索するものが複数ある場合そのセルを表記することを教えていただきました。
今回は、ファイルのシート名をすべて取得し、そのシート名と一致するものを(検索したいものの左ににはいろいろの文字が入ります。●〇〇文字数バラバラ)が検索範囲が複数あった場合(場合もあり)、そのシートのB2セルにそのものの空白より前の文字の入力することをしたいです。
質問の内容と私が書いたものが全然違うと思いますがどう直せばいいのでしょうか?

'シート名取得
Dim i As Long
For i = 1 To Worksheets.Count
Cells(i, "N") = Worksheets(i).Name こちらは毎日変化なく機械のしません。
Next

Set myRange = Worksheets("Sheet1").Range("B14:E20")こちらは毎日の機械メンテナンスがリンクされていて毎日変わります。

keyWord =〇〇〇 ←ここを複数検索したいのですがこれだと一つしか検索できないです。何を入れればいいんでしょうか?
  Worksheets("Sheet1").Cells(i, "N")としたんですが違いますよね。。。

Set myObj = myRange.Find(keyWord, LookAt:=xlPart)

Dim s As String
Dim myCell As Range

Set myCell = myObj

Do

Set myCell = myRange.FindNext(myCell)
Worksheets(i).Range("B2").Value = sprit(keyWord," ")


Loop While myCell <> myObj

質問者からの補足コメント

  • 検索したいものの左にはいろいろの文字が入ります。●〇〇 △△△ □□□ など文字数バラバラで空白は何個かありますが、左部分のみ転記したいです。この場合なら●〇〇です。spritじゃなくてsplitですね。

      補足日時:2021/03/02 17:41

A 回答 (3件)

No.1のお礼に対して。



もしかしてですけど検索したい曖昧語句は各シート名であり、書き込みたいのはそのシートのB2って事なんでしょうか?
でもそうなるとFindNextで複数見つけても書き込むセルは1個ですから、本来ですと最初に見つかったならその値で終わりって感じしかしません。

一度質問を締め切って箇条書きででも良いですが『やりたい作業手順』を書いて、この質問のURLをコピペで貼り付けて再質問が宜しいかもです。
全てのシートの中を検索するにしても、検索したい値はどこから得るのか(シート名であればそのように)そして取得した値をどこに並べていきたいのか(FindNextを使うって言うのが前提であれば)と思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
検索したい曖昧語句は各シート名であり、書き込みたいのはそのシートのB2って事で合っています。
探し出すというものをネットで調べて行き詰まり質問させてもらいました。
ご指示の通り一旦質問締め切らせてもらい再度、質問させていただきます。

お礼日時:2021/03/02 22:01

こんばんは、


#1様の通り、内容を把握できないのですが、
keyWord =〇〇〇 ←ここを複数検索したいのですがこれだと一つしか検索できないです。何を入れればいいんでしょうか?

複数回キーワードを変えれば良いのでは?と思います。
例えば、(変数名しっくりこないかもですが)

For Each keyWord In Worksheets
Set myObj = myRange.Find(keyWord.Name, LookAt:=xlPart)



Loop While myCell <> myObj
Next keyWord

あ、これ 
For i = 1 To Worksheets.Count
Cells(i, "N") = Worksheets(i).Name
Next
この場合、(出力する必要があれば別ですが)不要です。
それと
split(keyWord," ") でなく Split(myCell, " ") では無いかな。
さらに、myObjがNothingの時の処理も必要かも、、、(エラー対策)

検証していないので、ご提示のコードが問題なく実行される事が条件です。
    • good
    • 0
この回答へのお礼

ご指示ありがとうございます。
初心者には思いつかないものばかりです。ちょっと修正して行き詰まったらまた質問させてください。

お礼日時:2021/03/02 20:30

keyWord =〇〇〇 ←ここを複数検索したいのですがこれだと一つしか検索できないです。

何を入れればいいんでしょうか?
  Worksheets("Sheet1").Cells(i, "N")としたんですが違いますよね。。。

『違いますよね』と問われても逆に回答者としては『何を複数検索したいの?』と言う情報が欲しい所です。

あと

>For i = 1 To Worksheets.Count

これって全てのシートが対象になりそうですが、

>Cells(i, "N") =

この Cells(~ として書き込むシート自体もシート名が必要なのでしょうか?
と言うかどのシートなんだろう?

画像があるとわかりやすかったのかも。
ダミーでも良いですがデータは仕様に添った形の物を。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
シートは開いているファイルの全てのシートで、
keyWord =〇〇〇は、開いているファイルのシートを取得し取得した言葉を探し出すというイメージで作ったのですが。
考えが初心者でどう説明したらいいのか、伝わりますか?

お礼日時:2021/03/02 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!