HotXLS 文件

TXLSFormulaDebugger 類別

TXLSFormulaDebugger 在單一 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 錯誤碼
ErrorTextExcel 顯示文字,例如 #DIV/0! 或 #N/A

節點診斷

每個 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;

另請參閱