教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】IsError関数を使用して値がエラーか否かを判定する方法を教えて!

f:id:m_kbou:20211220073737p:plain

 

 

構文

記述方法は以下の通りとなります。

IsError([変数])

[説明]:

指定した変数がエラーか否かを判定します。エラーの場合には「True」を、エラー以外の場合には「False」を戻り値として返します。

[記述例]:

IsError(Range("C2"))

 

使い方

使い方について具体的に説明します。

変数がエラーの場合

変数がエラーの場合について説明します。 

[プログラミング例①]:

Sub サンプル()

  MsgBox IsError(Range("C2"))

End Sub

「C2セルの内容がエラーか否かを判断し、エラーの場合は「True」を、エラー以外の場合は「False」をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20211220073810p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例①]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。C2セルにはA1セル÷B2セルの結果が表示されています。今回はB2セルに0がセットされているため、0での除算となる事からC2セルにはエラー(#DIV/0!)が表示されています。この状態で<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20211220073823p:plain

②結果は以下の様に表示されます。C2セルの内容がエラーである事から、MsgBoxで「True」が表示されます。

f:id:m_kbou:20211220073834p:plain

[サンプル①]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例②]:

Sub サンプル()

  If (IsError(Range("C2")) = True) Then
    MsgBox "エラーです。"
  Else
    MsgBox "エラーではありません。"
  End If

End Sub

「C2セルの内容がエラーか否かを判断し、エラーの場合は「エラーです。」を、エラー以外の場合は「エラーではありません。」をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20211220074337p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例②]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。C2セルにはA1セル÷B2セルの結果が表示されています。今回はB2セルに0がセットされているため、0での除算となる事からC2セルにはエラー(#DIV/0!)が表示されています。この状態で<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20211220074349p:plain

②結果は以下の様に表示されます。C2セルの内容がエラーである事から、MsgBoxで「エラーです。」が表示されます。

f:id:m_kbou:20211220074401p:plain

[サンプル②]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

変数がエラーの場合についての説明は以上です。

 

変数がエラー以外の場合

変数がエラー以外の場合について説明します。 

[プログラミング例①]:

Sub サンプル()

  MsgBox IsError(Range("C2"))

End Sub

「C2セルの内容がエラーか否かを判断し、エラーの場合は「True」を、エラー以外の場合は「False」をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20211220074539p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例①]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。C2セルにはA1セル÷B2セルの結果が表示されています。今回は2÷1の結果である2がC2セルにセットされています。この状態で<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20211220074552p:plain

②結果は以下の様に表示されます。C2セルの内容がエラー以外である事から、MsgBoxで「False」が表示されます。

f:id:m_kbou:20211220074602p:plain

[サンプル①]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例②]:

Sub サンプル()

  If (IsError(Range("C2")) = True) Then
    MsgBox "エラーです。"
  Else
    MsgBox "エラーではありません。"
  End If

End Sub

「C2セルの内容がエラーか否かを判断し、エラーの場合は「エラーです。」を、エラー以外の場合は「エラーではありません。」をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20211220074723p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例②]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。C2セルにはA1セル÷B2セルの結果が表示されています。今回は2÷1の結果である2がC2セルにセットされています。この状態で<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20211220074735p:plain

②結果は以下の様に表示されます。C2セルの内容がエラー以外である事から、MsgBoxで「エラーではありません。」が表示されます。

f:id:m_kbou:20211220074745p:plain

[サンプル②]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

変数がエラー以外の場合についての説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

今回はIsError関数の使い方について説明しました。類似の内容としてIsDate関数を使用した日付や時刻として扱えるかどうかを調べる方法IsArray関数を使用した配列かどうかを調べる方法があります。こちらも参考にして下さい。