アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

今後は


重要な変数(この場合Name)の前にMsgbox Nameなどを入れるクセをつけるのはどうかな。
うまく行かないことが判った、後からでもテストで入れるのも良い。
そういうデバッグ過程なくして、ここへ質問しているようなのが問題だ。
ーー
そうすれば、こんな質問のような単純な不都合は防げるかもしれない。
    • good
    • 0
この回答へのお礼

ご投稿ありがとうございます。
imogasi様のご回答にはいつも参考にさせてもらっており
非常に助けられています。
そしてアドバイスをありがとうございました。

お礼日時:2009/07/29 22:04

>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
    • good
    • 2
この回答へのお礼

おかげさまで無事思い通りの結果を得られました。
本当にどうもありがとうございました。

お礼日時:2009/07/29 22:01

INPUTBOXで変数shn入れる目的はなんでしょうか?


で、nameってどこから値を貰ってるの?

この回答への補足

ごめんなさい。
投稿した後に間違いに気付きました。
shn ⇒ name に訂正します。

補足日時:2009/07/29 00:01
    • good
    • 0

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