Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
削除対象のシート名を変数で指定して、特定の名称のシートを削除する方法
投稿日時: 21/11/08 21:42:47
投稿者: toichi11

複数のエクセルファイルを対象に、指定したシート名のシートを一括削除するマクロを作成したく思っています。
 
Worksheets("Sheet1").Delete
 
の "Sheet1"のところを変数指定したく思っています。
 
Dim DelSheetName As String
DelSheetName = Cells(x, y).Value ⇒ エクセル上のセルの値を削除対象シート名としてセット
Worksheets(DelSheetName).Delete
 
というような形で使いたいのですが、
 
インデックスが有効範囲にありません のエラーが出てしまいます。
 
変数の型が違うのでしょうか?
 
解決方法をご存じの方がいらっしゃれば教えてください。
 
For Each文で各シートをループでまわして、If ws.Name = DelSheetName then のようにすれば書けるのですが、できれば、ダイレクトにシート名を指定して削除するようなソースで書きたく思っています。
 
よろしくお願いします。

回答
投稿日時: 21/11/08 21:49:06
投稿者: simple

>インデックスが有効範囲にありません
このエラーが出るのは、実在しないシート名を指定しているのが原因です。
原因の100%がそれで、例外はありません。
落ち着いて、指定したシート名が実際にあるものか確認してみてください。

投稿日時: 21/11/08 21:58:00
投稿者: toichi11

ありがとうございます。シート名、ミスってました。お騒がせしました。

回答
投稿日時: 21/11/09 17:17:06
投稿者: simple

解決されたのであれば、閉じてもらうといいですね。
「家に帰るまでが遠足です」(校長談話)ということです。

トピックに返信