• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAである特定文字列を含むシート名例えば「りんご(1)」)

Excel VBAで特定文字列を含むシート名を検索する方法

このQ&Aのポイント
  • Excel VBAを使用して特定文字列を含むシート名を検索し、処理を行う方法について教えてください。
  • 具体的には、「みかん*」という特定文字列で検索し、一致したシートに対して処理を行いたいです。
  • また、ファイル内に検索シート名が存在しない場合は、新たにシートを作成する処理が必要です。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

for each s in worksheets  if s.name like "みかん*" then   'do みかん*  elseif s.name = "りんご" then   'do りんご  else   'do any other  end if next のように。 #みかん1,みかん2,もしかしたらみかん3ぐらいまでに限定できますという話であるなら select case s.name case "みかん1" to "みかん9"  msgbox "みかんs" case "りんご"  msgbox "りんご" case else end select のようにもできます。

mugigohan
質問者

お礼

早速のお返事ありがとうございました。 「みかん」シートをコピーすると「みかん(1)」「みかん(2)」とかになりますよね。 今回はそういった形で運用されるシートに対してのみ処理をしたかったので、()をつけた場合どうも上手くいきませんでした。 色々試すうちに下記のやり方でなんとか行けそうという方法がわかりました。 今回も色々勉強させていただきました。 ありがとうございました。 Sub SelectCaseステートメントで○○を含むの書き方() Dim msg As Variant For Each myWS In Worksheets msg = myWS.Name Select Case True Case msg Like "みかん*" myWS.Activate Case msg Like "Sheet1" Range("a1").Select Case msg Like "りんご*" Range("b6").Select Case Else Range("c11").Select End Select Next End Sub

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

今のマクロでそこにExit Forを置いてしまったら最初のりんごで脱出してしまい,次以降のりんごがもう出来ません。 sub macro1()  dim s as worksheet  for each s in worksheets   if s.name like "りんご*" then    s.activate    msgbox s.name   end if  next end sub

mugigohan
質問者

補足

すみません その該当するシートのみ2・3枚(=みかん1・みかん2シートなど)に対してのみ処理をしたいので Sub シートチェックcase使用()   For Each myWS In Worksheets     select Case myWS.Name       Case "みかん*"           myWS.Activate       Case "Sheet1"          Range("a1").Select       Case "りんご"          Range("b6").Select       Case Else          Range("c11").Select       End Select Next End Sub こんな感じかと思いついたのですが、Case "みかん*" 部分の「みかん」を含むシートにヒットしません。 どのように記述すれば「みかん」を含むシートのみを対象にできるのでしょうか お手数ですが、ご教授をお願い致します。

すると、全ての回答が全文表示されます。
  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

>If Scheck = 0 Then >Sheets.Add.Name = "検索シート名" >End If Scheckにはシート検索の判定結果が入ってます。 0初期値、見つかったときのみ1、見つからなかったら0(のまま) If Scheck = 0 Then  見つからなかったときの処理 else  見つかったときの処理 End If

すると、全ての回答が全文表示されます。
回答No.1

Scheck の形を何にするかの質問に対しては、 "検索シート名" が有るか無いかのスイッチですので、 integer で良いと思います。 「みかん*」で検索を行うのは、 If left(sheet_name.Name,3) = ("みかん") Then で良いと思います。 外していたらごめん ではでは。

すると、全ての回答が全文表示されます。

関連するQ&A