Excel VBA セルのエラーチェックマークを削除する Errorオブジェクト

ここでは、以下の図のように、セルに数値を文字列形式で入力した場合に表示される「エラーチェックマーク」を一括で削除する方法について説明します。

この「エラーチェックマーク」は「ファイル」タブの「オプション」の「数式」の「エラーチェックルール」の「文字列形式の数値、またはアポストロフィで始まる数値」のチェックボックスのチェックを外すことで「エラーチェックマーク」を非表示にすることもできます。

VBAで「エラーチェックマーク」を操作するには、セルを表すRange【レンジ】オブジェクトのErrors【エラーズ】プロパティでセルのエラーチェックの集まりを表すErrors【エラーズ】オブジェクトを取得し、そのItem【アイテム】プロパティで特定のエラーを表すError【エラー】オブジェクトを取得して、その「エラーチェックオプション」の設定を操作するIgnore【イグノア】プロパティを操作します。

スポンサーリンク

Errors【エラーズ】プロパティ

セルのエラーチェックの集まりを表すErrors【エラーズ】オブジェクトを取得するには、Range【レンジ】オブジェクトのErrors【エラーズ】プロパティを使用します。

Errors【エラーズ】プロパティの書式と設定値の説明

オブジェクト.Errors
【戻り値】Errors【エラーズ】オブジェクト
  • オブジェクト(必須)
    エラーになっている単体のセルをRange【レンジ】オブジェクトで指定します。セル範囲を指定するとエラーになります。

Item【アイテム】プロパティ

セルのエラーチェックの単体を表すError【エラー】オブジェクトを取得するには、Errors【エラーズ】オブジェクトのItem【アイテム】プロパティを使用します。

Item【アイテム】プロパティの書式と設定値(引数)の説明

オブジェクト.Item( Index )
【戻り値】Error【エラー】オブジェクト
  • オブジェクト(必須)
    Range【レンジ】オブジェクトのErrors【エラーズ】プロパティで取得したErrors【エラーズ】オブジェクトを指定します。
  • Index【インデックス】(必須)
    参照するエラーチェックを以下の定数を使用して設定します。

    定数内容
    xlEvaluateToErrorエラー結果となる数式を含むセル
    xlTextDate2桁の年が含まれるセル
    xlNumberAsText文字列形式の数値、またはアポストロフィで
    始まる数値を含むセル
    xlInconsistentFormula領域内の他の数式と矛盾する数式のセル
    xlOmittedCells領域内のセルを除いた数式のセル
    xlUnlockedFormulaCells数式を含むロックされていないセル
    xlEmptyCellReferences空白セルを参照する数式

Ignore【イグノア】プロパティ

セルの「エラーチェックオプション」の設定や状態の取得をするには、単体の「エラーチェックオプション」を表すError【エラー】オブジェクトのIgnore【イグノア】プロパティを使用します。

Ignore【イグノア】プロパティの書式と設定値

オブジェクト.Ignore = 設定値
  • オブジェクト(必須)
    Item【アイテム】プロパティで取得したError【エラー】オブジェクトを指定します。
  • 設定値(必須)
    「エラーチェックオプション」の状態をブール型の値で指定します。

    設定値内容
    False有効
    True無効

セルに文字列形式の数値が入力されている場合の「エラーチェックオプション」を無効にするコードと解説

Sub エラーチェック無効()
Dim セル As Range
For Each セル In ActiveSheet.UsedRange
  If セル.Errors.Item(xlNumberAsText).Ignore = False Then
     セル.Errors.Item(xlNumberAsText).Ignore = True
  End If
Next
End Sub
2行目【Dim セル As Range】
3行目のFor Each【フォーイーチ】ステートメントで使用するコレクションから1つのオブジェクトを取り出して格納する変数「セル」をオブジェクト型(Range)で宣言します。


3行目【For Each セル In ActiveSheet.UsedRange】
For Each【フォーイーチ】ステートメントで使用を使用して繰り返し処理の始まりです。コレクションにはWorksheet【ワークシート】オブジェクトのUsedRange【ユーズドレンジ】プロパティを設定して、すべての使用されているセルを参照して、そのセルを一つずつオブジェクト変数「セル」に格納し、使用されているセルの数分繰り返します。


4行目【If セル.Errors.Item(xlNumberAsText).Ignore = False Then】
If【イフ】ステートメントを使用して条件式にErrors【エラーズ】オブジェクトのItem【アイテム】プロパティで参照した「文字列形式の数値のセル」の「エラーチェックオプション」の状態を確認するIgnore【イグアナ】プロパティがFalseのとき、つまり「エラーチェックオプション」が設定されているときを定義します。


5行目【セル.Errors.Item(xlNumberAsText).Ignore = True】
4行目の条件分岐が成立したとき、つまり「文字列形式の数値のセル」に「エラーチェックオプション」が設定されているとき
Range【レンジ】オブジェクトのErrors【エラーズ】プロパティで取得したErrors【エラーズ】オブジェクトのItem【アイテム】プロパティで参照した「文字列形式の数値のセル」のIgnore 【イグノア】プロパティにTrueを設定して、その「エラーチェックオプション」を解除します。


7行目【Next】
ここまでの処理を使用されているセルの数分繰り返します。

実行結果

以上で、セルのエラーチェックマークを削除する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告