FpSpreadsheet: Fix INDIRECT formula regarding references to other sheets.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9356 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2024-05-30 12:04:34 +00:00
parent 6124d2d047
commit 79c502f0e9
3 changed files with 8 additions and 4 deletions

View File

@ -1623,8 +1623,7 @@ begin
fs := ExprFormatSettings; fs := ExprFormatSettings;
try try
UpdateExprFormatSettings; UpdateExprFormatSettings;
// ExprFormatSettings := FFormatSettings; AResult.Worksheet := FWorksheet;
// FFormatSettings := ExprFormatSettings;
FExprNode.GetNodeValue(AResult); FExprNode.GetNodeValue(AResult);
finally finally
ExprFormatSettings := fs; ExprFormatSettings := fs;

View File

@ -2335,10 +2335,10 @@ begin
begin begin
book := TsWorksheet(Args[0].Worksheet).Workbook; book := TsWorksheet(Args[0].Worksheet).Workbook;
sheet := book.GetWorksheetByIndex(Args[0].ResSheetIndex); sheet := book.GetWorksheetByIndex(Args[0].ResSheetIndex);
Result.Worksheet := sheet;
end; end;
addr := sheet.ReadAsText(Args[0].ResRow, Args[0].ResCol); addr := sheet.ReadAsText(Args[0].ResRow, Args[0].ResCol);
Result := CellResult(addr); Result := CellResult(addr);
Result.Worksheet := sheet;
end else end else
if (Args[0].ResultType = rtString) then if (Args[0].ResultType = rtString) then
Result := CellResult(Args[0].ResString); Result := CellResult(Args[0].ResString);

View File

@ -1409,7 +1409,12 @@ begin
if res.ResSheetName = '' then if res.ResSheetName = '' then
res.Worksheet := self res.Worksheet := self
else else
res.Worksheet := Workbook.GetWorksheetByName(res.ResSheetName); res.Worksheet := Workbook.GetWorksheetByName(res.ResSheetName);
if res.Worksheet = nil then
begin
WriteErrorValue(lCell, errIllegalRef);
exit;
end;
end else end else
if res.ResSheetName <> '' then if res.ResSheetName <> '' then
res.Worksheet := Workbook.GetWorksheetByName(res.ResSheetname); res.Worksheet := Workbook.GetWorksheetByName(res.ResSheetname);