- 締切済み
エクセルVBA シート名の部分一致検索について エクセル2007
VBAでエクセルの全シート名を部分一致で検索したいと考えています。 そこで以下のコードを書いたのですが、 インプットボックスにどんな文字列を入力しても全てのシート名を 取得してしまって途方にくれています。 どなたかお助けください。 Sub test01() Dim name As String Dim ws As Worksheet shn = InputBox("検索文字列を入力") For Each ws In ThisWorkbook.Worksheets If ws.Name Like " * " & name & " * " Then ws.Activate MsgBox ws.Name End If Next ws End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
今後は 重要な変数(この場合Name)の前にMsgbox Nameなどを入れるクセをつけるのはどうかな。 うまく行かないことが判った、後からでもテストで入れるのも良い。 そういうデバッグ過程なくして、ここへ質問しているようなのが問題だ。 ーー そうすれば、こんな質問のような単純な不都合は防げるかもしれない。
- hige_082
- ベストアンサー率50% (379/747)
>Dim name As String これ、おかしくない? >shn ⇒ name に訂正します。 では無く name ⇒ shn に訂正した方がいいよ ws.NameのNameとかぶってるよね Nameは変数?それともプロパティ?とEXCELさんが悩んでいると思います なぜ、コンパイルエラーがでないのかは、私の知識では説明できませんが・・・ Sub test01() Dim shn As String Dim ws As Worksheet shn = InputBox("検索文字列を入力") For Each ws In ThisWorkbook.Worksheets If ws.Name Like "*" & shn & "*" Then ws.Activate MsgBox ws.Name End If Next ws End Sub
お礼
おかげさまで無事思い通りの結果を得られました。 本当にどうもありがとうございました。
- hana-hana3
- ベストアンサー率31% (4940/15541)
INPUTBOXで変数shn入れる目的はなんでしょうか? で、nameってどこから値を貰ってるの?
補足
ごめんなさい。 投稿した後に間違いに気付きました。 shn ⇒ name に訂正します。
お礼
ご投稿ありがとうございます。 imogasi様のご回答にはいつも参考にさせてもらっており 非常に助けられています。 そしてアドバイスをありがとうございました。