空のワークシートのテスト(Microsoft Excel)
Michaelには、多数のワークシートを印刷するマクロがあります。印刷するワークシートの1つまたは2つにデータが含まれていない場合があります。彼は、ワークシートにデータが含まれているかどうかをテストし、それらのワークシートのみを印刷する手法を探しています。
空のワークシートをテストするには、いくつかの方法があります。
もちろん、少なくともある程度は、「空」が実際に何を意味するかによって異なります。たとえば、ワークシートにまったく何も含まれていない場合、つまりワークシートのどのセルにも何も含まれていない場合、空であると見なすことができます。
ただし、追加した列見出しがいくつか含まれているワークシートがあり、それらの見出し以外は何もない場合があります。 Excelはワークシートを空ではないと見なしますが、印刷目的では空であると見なす場合があります。
おそらく、ワークシートが空かどうかを確認する最も簡単な方法は、UsedRangeオブジェクトを使用してワークシートの内容を判別することです。
IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=1 _ AND ActiveSheet.UsedRange.Columns.Count=1 _ AND Cells(1,1).Value=""
UsedRangeオブジェクトは、ワークシート内の使用済みセルの範囲で構成されていることに注意してください。したがって、この範囲の行数が1で、この範囲の列数が1で、セルA1に何もない場合、ワークシートはおそらく空です。
ワークシートにヘッダー行(または2つ)がある場合は、この手法を調整して、それらのヘッダーにある行と列を変更できます。たとえば、A1:F4の範囲のヘッダーがある場合は、次のようにテクニックを調整できます。
IsSheetEmpty = ActiveSheet.UsedRange.Rows.Count=4 _ AND ActiveSheet.UsedRange.Columns.Count=6
この場合、A1(および他のいくつかのセル)に情報(ヘッダー)が含まれていることがわかっているため、A1の内容を確認する必要はありません。ワークシートに追加情報があるかどうかを判断するには、これらのヘッダーのすべてを無視するだけです。
ワークシートが完全に空の場合(追加したヘッダー情報がない場合)、CountAワークシート関数を使用してワークシートのセルを分析できます。関数の結果がゼロより大きい場合、ワークシートは空ではありません。たとえば、分析するワークシートがオブジェクトshtによって指定されているとします。この手法は次のように使用できます:
IsSheetEmpty = Application.WorksheetFunction.CountA(sht.Cells) = 0
もちろん、ワークシートに情報以外の項目をセルに含めることは可能です。これらのタイプのオブジェクト(オートシェイプ、グラフィック、埋め込みグラフなど)がワークシートに含まれていると思われる場合は、「空」のテストをより完全にする必要があります。これらの各アイテムは、VBAでアクセス可能なコレクション内に含まれており、各コレクションのCountプロパティをチェックして、ゼロかどうかを確認できます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3280)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link空のワークシートのテスト。