• ベストアンサー

括弧の入ったシート名が存在するかを判断する

シート名が存在するかを判断する下記のマクロで括弧が入ったシート名を認識できません。(山田(新)というシートは存在するのですが、存在しないと判断されてしまう。半角括弧も全角括弧も同じでした。)             何か方法がありますでしょうか。 Sub test_SheetExists() 'シート存在を調べる Dim st$ st = "山田(新)"             '調べるシート名 If IsError(Evaluate(st & "!a1")) Then MsgBox st & vbCrLf & "シートは存在しません" Else MsgBox st & vbCrLf & "シートは存在します" End If End Sub

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

これ、面白い方法ですね。 原因はシート名に、( )、が付いていることです。 ( )が付いているときは、'(シングルクォーテーション)で囲まなければいけません。 また、()無しの場合、通常は、'(シングルクォーテーション)は不要ですが、 囲んでも問題はありませんので、常に囲むようにすればいいわけです。   If IsError(Evaluate("'" & st & "'" & "!A1")) Then お試しください。  

pin3891227
質問者

お礼

できました! ありがとうございました。 本当に助かりました。

その他の回答 (1)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

勉強不足なもので、Evaluate の使い方がよく解らないのですが、"山田(新)"シートがあるかどうかを、このような方法で調べられるものなのでしょうか? 私なら、このようにします。 Sub test()   Dim Sh As Worksheet   Dim st As String   st = "山田(新)"   For Each Sh In Worksheets     If Sh.Name = st Then       MsgBox st & vbCrLf & "シートは存在します"       Exit For     End If   Next Sh   If Sh Is Nothing Then     MsgBox st & vbCrLf & "シートは存在しません"   End If End Sub 見栄えのために、インデントを全角スペースにしています。

pin3891227
質問者

お礼

早速のご回答ありがとうございます。 教えていただいたソースで確認しましたが、やはり括弧が認識できないようです。括弧をはずすと正常に認識できます。

関連するQ&A