【VBA】エラー「#DIV/0!」を特定の文字列に置き換える

エクセルは、「表計算ソフト」なので、様々なデータを入力して表作成できますが、計算対象のセル値によっては、結果がエラーになってしまうことがあります。

いわゆるこういうやつです。

 

#DIV/0!

 

この表示になるパターンとしては、

 

.除数が0の場合

.セルが空白の場合

 

などがあります。

 

「1」は0で割ることは出来ないので当然エラーが出ますし、「2」は表を作成する上であり得る事なので、このエラー表示自体は出るべくして出るといっても過言ではありません。

ただ、見た目として良くないので、今回は、このエラー表示を別の形に置き換えるマクロを考えたいと思います(今回は 「ー」 に置き換え)。

 

因みにですが、ここで紹介するVBAのコードは、

プロ顔負けといったすごいものではなく、こうすれば「一応できる」という初心者レベルでの解説となります。

あくまで個人レベルで作業することを想定していますのでご了承ください。

「スポンサーリンク」

全体像

今回使用するエクセルの表は、こんな感じ。

判定するのは、5行目(C5~G5まで)です。

サンプルデータ

 

 

サンプルコード

では、いきなり全体のコードを書きたいと思います。

 

<サンプルコード>

Sub セルチェック()

Dim i As Long
Dim ccnt As Long

ccnt = Range(“C5:G5”).Columns.Count  --------- 

 

For i = 1 To ccnt  ------------------- 

If IsError(Cells(5, 2 + i)) = True Then

Cells(5, 2 + i).Value = “-“

End If

Next

End Sub

 

■詳細説明

「ア」部分

まずは、実際判定したいセル範囲ついてカウントします。

全体像でもあるように、今回の計算結果はC5~G5セルですので、この範囲のセル数をカウントします。

 

 

「イ」部分

計算結果が「#DIV/0!」なのかどうかを調べる、この記事の肝は、IsError関数です。

これは、指定した値がエラーかどうかを判定する関数となります。

 

因みに、下記エラーについても同様にチェックできます。

#N/A      参照値が見つからない
#REF!    数式で無効なセルが参照されている(参照先の行や列を削除など)  
#VALUE!  数値の代わりに文字列を引数に指定するなど、引数の指定が間違っている(文字列など)  

 

『For~NEXT構文」で、まず「i(スタート)」が「1」なので、Cells(5行目,3列目)となりC5セルがチェックの対象となります。

エラーかどうか(#DIV/0!なのかどうか)を判定し、エラー(True)ならば、同セルに対して「-」を入れ込んでいます。

 

あとは、「ア」で取得した値(取得値:5)まで、D5、E5・・・と自動にチェックしていきます。

 

因みに、単に該当セル(エラーが出ているセル)を目立たせるなどであれば、

Cells(5, 2 + i).Interior.color=●●

などとすると、見た目に分かりやすいですね。

ページ先頭へ戻る

「スポンサーリンク」

最新情報をチェックしよう!