# ERR

#ERR を表示するセルは、そのセルが関数を正常に実行できなかったことを示しています。一般的には、無効な入力パラメータが原因です。#ERR 状態は、ビジョンアプリケーションの通常の操作によって発生することも、スプレッドシートの論理演算に含まれるエラーによって発生することもあり、さまざまな要因があります。一般に、次の場合に #ERR が発生します。

1. 算術演算の基本的なエラー:セル A4 = A3/A2 で、セル A2 が 0 の場合、セル A4 の関数は「ゼロによる除算」エラーを生成します。
2. 領域グラフィックスエラー:領域が画像の範囲外へ移動します。PatternMatch などの画像内での位置決めツールを使用し、その結果データを使用して他のビジョンツールの位置をフィクスチャするとき、ビジョンツールの領域の一部が画像の範囲外に出てしまうことがあります。この場合、ビジョンツールは、ビジョンツールの有効な結果構造体を返さずに #ERR を報告します。
3. 「Get」関数のエラー:DetectBlobs ツールとともに GetX 関数を使用すると、ビジョンツールが結果を生成せず、DetectBlobs ツールで予想される数のブロブを検出できないことがあります。このような状況で画像から目的のブロブを検出できなかった場合、GetX 関数は #ERR を報告します。

## #ERR セルのトラブルシューティング

ほとんどの #ERR 状態はエラー文字列を返します。エラー文字列が生成されている場合、#ERR を含むセルにマウスを合わせると、エラー文字列が表示されます。また、赤い感嘆符 がプロパティシートに表示された場合は、その赤い感嘆符にカーソルを合わせるとエラー文字列が表示されます。エラー文字列をスプレッドシート上で取得するには、GetErrorString 関数を使用します。各エラー文字列には個別の診断コードが割り当てられています。診断コードは、GetErrorCode 関数で取得できます。

## #ERR を無視してエラーの拡散を止める方法

DetectBlobs ツールにより検出された複数のブロブの合計面積を計算するケースを考えてみましょう。GetArea 関数を使用して、ブロブ構造体から個々のブロブの面積を取得します。ブロブが検出されないと、GetArea 関数は正常に実行されませんが、アプリケーションでは正常な状況である場合があります。

セル | 関数 | 説明
A1 | DetectBlobs([パラメータ]) | ブロブを検出して、ブロブ構造体を返します。
B1 | GetArea(A1,0) | ブロブ 0 の面積を返します。
B2 | GetArea(A1,1) | ブロブ 1 の面積を返します。
B3 | GetArea(A1,2) | ブロブ 2 の面積を返します。
B4 | Sum(B1:B3) | ブロブの総面積を計算します。
DetectBlobs ツールが 3 つ以上のブロブを検出できないと、式 Sum(B1:B3) が参照している 1 つ以上のセルが #ERR を報告するため、この式は #ERR を報告します。このエラー状態を無視するには、ErrFree ルックアップ関数関数を使用します。
B4 | Sum(ErrFree(B1:B3)) | ブロブの総面積を計算します。

注: ErrFree 関数を使用すると、#ERR を報告する他のセルからの入力値は値 0 に変換されます。この場合、Sum 関数は、エラーを報告する代わりに、入力の #ERR セルに 0 を追加します。