HotXLS ドキュメント

TXLSFormulaDebugger クラス

TXLSFormulaDebugger は、1 つの XLSX ワークシート コンテキストで数式を分析し、所有された TXLSFormulaDebugSession を返します

セッションは、完全な解析済み式ツリーと、実際の評価順序、中間値、依存座標、選択された遅延分岐、スキップされた式、最初のエラー発生源を組み合わせます

呼び出し側は、Analyze によって返されたすべてのセッションを所有し、解放する必要があります

宣言

type
  TXLSFormulaDebugger = class
    constructor Create(Worksheet: TXLSXWorksheet);
    function Analyze(const Formula: WideString):
      TXLSFormulaDebugSession;
  end;

セッション メンバー

Formula省略可能な先頭の等号を含まない正規化されたソース
FinalValue計算されたスカラー値または標準の Variant 数式エラー
Nodes親が子より先の順序で解析されたノード
Dependencies利用可能な場合、解決されたワークシート座標を持つセル、範囲、または定義名の依存関係
StepNodesスキップされたノードを含む、決定的な評価順序のノード
CurrentNode対話型のナビゲーション カーソルによって選択されたノード
ErrorOriginNodeId最終的な数式エラーの発生源となった最も深いノード。最終結果がエラーでない場合は -1
ErrorCode最終的なエラー値が保持する Excel エラー コード
ErrorText#DIV/0! や #N/A などの Excel 表示テキスト

ノード診断

各 TXLSFormulaDebugNode は、その親、深さ、ソース スパン、ノード種別、演算子または関数名、オペランド ノード識別子、オペランド値、結果値、評価インデックス、状態、選択された分岐、エラーの詳細を報告します

ノードの状態は、fdsPending、fdsEvaluated、fdsSkipped、または fdsError です

分岐診断は、真と偽の IF パス、値とフォールバックの IFERROR または IFNA パス、選択された CHOOSE、IFS、または SWITCH 分岐を区別します

回復された内部エラーは、最終的な数式の結果が有効な場合でも、そのノード上で表示されたままになります

ナビゲーション

例

Debugger := TXLSFormulaDebugger.Create(Sheet);
try
  Session := Debugger.Analyze('=IF(A1=0,42,B1/C1)');
  try
    if Session.MoveFirst then
      repeat
        Writeln(Session.CurrentNode.Source);
      until not Session.MoveNext;
  finally
    Session.Free;
  end;
finally
  Debugger.Free;
end;

関連項目