シートの存在チェック方法

VBAでシート関係の処理を行うことがあります。その際に、そのシートが存在しているのかチェックが必要な場合があります。チェック方法ですが、対象シート名のシートオブジェクトが取得できるかどうかで判定するようにします。

WorkBooksオブジェクトやWorkSheetsオブジェクトをループして対象シート名と一致するかチェックする方法もありますが、関係ないシートの処理を行うのはやはり無駄ですから避けた方がいいでしょうね。


ソースコード

非表示シートを存在するとみなすかどうか判定用

シートの表示状態には3種類あり、xlSheetVisible(表示)、xlSheetHidden(非表示)、xlSheetVeryHidden(再表示不可の非表示)があります。

シートが非表示の場合に、存在する、とするのか、存在しない、とするのかを決めるために3番目の引数を用意しています。

シートの表示状態の判定無し版

シートの状態に関係なく存在チェックを行うコードです。

上記の処理からシートの表示状態判定処理をはずしたものになります。



ソースコードの説明

処理の概要ですが、引数シート名のシートオブジェクトを取得できるかどうかで存在かどうかを判定しています。また、シートの表示状態が非表示の場合に存在すると判定するのかどうかに第3引数を利用します。

処理の先頭でOn Error Resume Nextを行っていますが、これは22行目のシートオブジェクトの取得でエラーが発生した場合も処理を継続するための措置です。エラーが発生した場合はそのシートが存在しないことを意味します。

25行目から29行目でシートの存在を判定しています。以降の処理で、第3引数(存在するとみなすシートの表示状態)の判定を行っています。


利用例

3種類の利用方法で上記関数を呼び出しています。