• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:指定シートの有無を確認)

指定シートの有無を確認するVBAでうまく作動しない問題

このQ&Aのポイント
  • VBAを使用して指定したシートの有無を確認する処理を作成していますが、うまく動作していません。指定したシートが存在するかどうかを確認し、存在しない場合は別のシートをコピーして表示する処理です。
  • 処理の流れとしては、指定したシート名を変数に格納し、エラーハンドリングを用いてシートが存在するかどうかを確認します。存在する場合はメッセージを表示し、存在しない場合は別のシートをコピーして表示します。
  • しかし、現在の処理ではうまく動作しておらず、シートが存在しているにもかかわらず存在しないと判定されるなどの問題が発生しています。正しいシートの有無を確認するためには、どのような修正が必要でしょうか?

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Dim sheetname As String Dim sh As Worksheet sheetname = Sheets("入力").Cells(1, 1).Value On Error Resume Next Set sh = Worksheets(sheetname) On Error GoTo 0 If Not sh Is Nothing Then MsgBox sheetname & "は、有ります。", vbInformation Else Sheets("原紙").Copy before:=Sheets(1) Worksheets(1).Name = sheetname End If

hrgc
質問者

お礼

ありがとうございました。 思いどおりになりました。

その他の回答 (1)

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

>Dim sheetname As String >Set dummy = sheetname Sheetnameはただの文字列なので   Set dummy = Sheets(sheetname) としないといけない。   変数flagもErr.numberを利用すると不要になります。 で、質問者のコードをそのまま使うとすると。。  '-------------------------------------- Sub Test()   Dim Dummy As Worksheet '●ちゃんと型宣言する   Dim SheetName As String   SheetName = Sheets("入力").Cells(1, 1).Value   On Error Resume Next   Set Dummy = Sheets(SheetName)     If Err.Number = 0 Then       MsgBox "シートがあります"     Else       Sheets("原紙").Copy Before:=Sheets(1)       Sheets(1).Name = SheetName     End If   On Error GoTo 0 End Sub '--------------------------------------- 以上です。

hrgc
質問者

お礼

ご親切な対応ありがとう御座いました。 スムーズに解決いたしました。

関連するQ&A