Excel VBA入門 その48:SpecialCellsでエラー「該当するセルが見つかりません。」を回避する方法

エクセルVBA VBA



みなさんはSpecialCellsメソッドを使っていますか?

SpecialCellsメソッドは可視セルの数などの指定したセルすべてを取得できる便利メソッドですが、「該当するセルが見つかりません」などのエラーが出て上手く使えないということがありませんか?

今回は、 SpecialCellsメソッドで起こりえるエラーの原因と回避方法について徹底的に説明していきます。

参考:Excel VBA入門 その50:SpecialCells(xlCellTypeVisible)がエラーの場合の原因・対処方法



SpecialCellsでエラー「該当するセルが見つかりません。」を回避する方法

エラー「該当するセルが見つかりません。」になる原因

「該当するセルが見つかりません。」とのエラー表示が出る原因は、取得すべきセルが無かったkということが考えられます。

SpecialCellsメソッドは、指定したセル範囲の中で、あらかじめ指定した種類のセルをすべて取得します。

したがって、あらかじめ指定した種類のセルが無い場合は、「該当するセルが見つかりません。」のエラーが出てしまいます。

ここで、 SpecialCells メソッドの構文を確認してみましょう。

Result = Rangeオブジェクト. SpecialCells(Type, Value)

引数、戻り値は以下の通りになっています。

  • Rangeオブジェクト  ・・・  対象となるセル範囲を指定します
  • Type  ・・・  取得するセルの種類を指定します(XlCellType 列挙型
  • Value   ・・・  引数 type に xlCellTypeConstants または xlCellTypeFormulas を設定した場合のみ XlSpecialCellsValue 列挙型の定数(値)を指定します。これによりより細かな形式の指定を行うことができます。省略するとすべての項目が対象となります。
  • Result  ・・・  引数で指定された条件を満たしているすべてのセル(Range オブジェクト)を取得します。

◎引数Typeの設定値

定数内容
xlCellTypeAllFormatConditions 表示形式が設定されているセル
xlCellTypeAllValidation 条件の設定が含まれているセル
xlCellTypeBlanks 空白セル
xlCellTypeComments コメントが含まれているセル
xlCellTypeConstants 定数が含まれているセル
xlCellTypeFormulas 数式が含まれているセル
xlCellTypeLastCell 使われたセル範囲内の最後のセル
xlCellTypeSameFormatConditions 同じ表示形式が設定されているセル
xlCellTypeSameValidation 同じ条件の設定が含まれているセル
xlCellTypeVisible すべての可視セル

エラー「該当するセルが見つかりません。」回避方法

指定した種類のセルが見つからないときにエラーを回避する方法は、On Error Resume Nextステートメントを使います。

On Error Resume Nextステートメントを使うと、エラーが発生したときに、エラーが発生した行(処理)を無視して次の行に移行し、処理を続行します。

下で紹介するサンプルコードは、空白セルに「0」を入力する処理を行うもので、該当セルが無いときにエラー回避をするコードです。

Sub 空白セルに0を入れる()
    On Error Resume Next 'エラーが出た行を無視する
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Value = 0
End Sub

On Error Resume Nextを記述しているので、空白セル(該当セル)が無くてもエラーが表示されません。

ちなみに、On Error Resume Nextを記述していないと、該当セルが無い場合には、「該当するセルが見つかりません。」とエラーが表示されます。

【まとめ】SpecialCellsでエラー「該当するセルが見つかりません。」を回避する方法

今回はSpecialCellsを使った場合に「該当するセルが見つかりません。」とエラー表示になる原因と回避方法について説明しました。

原因は、SpecialCellsメソッドであらかじめ指定した種類のセルが無いことです。

回避方法は、On Error Resume Nextステートメントを記述することで、該当セルが無くてもエラーを無視することができるようになります。

SpecialCellsメソッドは、VBAでは無くてはならないものですので、今回の記事をぜひ参考にしてくださいね。

参考:Excel VBA入門 その50:SpecialCells(xlCellTypeVisible)がエラーの場合の原因・対処方法 http://club-vba.tokyo/vba-specialcells-error/

コメント

  1. […] […]

タイトルとURLをコピーしました