SPREAD for WPF 3.0J - GcSpreadSheet
自動再計算および自動更新
SPREAD for WPF 3.0J - GcSpreadSheet > 開発者ガイド > 数式と関数 > 自動再計算および自動更新

GcSpreadSheetは、ワークシートでの数式の自動再計算および自動更新に対応しています。数式は、以下の場合、自動的に再計算され更新されます。

Calculation列挙体は、表計算エンジンがワークシートの数式を計算する方法を制御します。この列挙体の値を3つのモードのManual、AutomaticおよびSemiautomaticのいずれかに設定できます。

Calculation列挙体がAutomaticに設定されている場合、数式の自動再計算と自動更新が有効になり、以下のルールが提供されます。

条件によって、数式を自動的に更新する必要がない場合があり、Calculation列挙体をManualモードに設定できます。この場合、ワークシートで依存セルの内容が変更されても、数式は自動的に更新されません。

次のサンプルコードは、Calculation列挙体で各モードを使用して、ワークシートでの数式の計算および更新を実行する方法を示します。

コードのコピー
// 自動再計算および自動更新。
// ユーザーは自動再計算を制御できます。
GcSpreadSheet.Workbook.WorkbookSet.CalculationEngine.Calculation = GrapeCity.Spreadsheet.Calculation.Manual;
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 0].Value = 20;
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 1].Value = 10;
GcSpreadSheet.Workbook.ActiveSheet.Cells[3, 2].Formula = "=SUM(A1,B1)";
GcSpreadSheet.Workbook.ActiveSheet.Cells[4, 2].Formula = "=A1*B1";

// ンデマンドの計算、つまり「手動」の計算の場合、セルは値にアクセスする前に評価されません。
var value1 = GcSpreadSheet.Workbook.ActiveSheet.Cells[3, 2].Value; //30
var value2 = GcSpreadSheet.Workbook.ActiveSheet.Cells[4, 2].Value; //200
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 1].Value = 100;
var value3 = GcSpreadSheet.Workbook.ActiveSheet.Cells[3, 2].Value; //まだ「30」です。
var value4 = GcSpreadSheet.Workbook.ActiveSheet.Cells[4, 2].Value; //まだ「200」です。

// しかし、計算を自動に変更すると、依存セルの値が変更されるとすぐに数式が更新されます。
GcSpreadSheet.Workbook.WorkbookSet.CalculationEngine.Calculation = GrapeCity.Spreadsheet.Calculation.Automatic;
コードのコピー
'自動再計算および自動更新。
'ユーザーは自動再計算を制御できます。
GcSpreadSheet.Workbook.WorkbookSet.CalculationEngine.Calculation = GrapeCity.Spreadsheet.Calculation.Manual
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 0).Value = 20
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 1).Value = 10
GcSpreadSheet.Workbook.ActiveSheet.Cells(3, 2).Formula = "=SUM(A1,B1)"
GcSpreadSheet.Workbook.ActiveSheet.Cells(4, 2).Formula = "=A1*B1"

'ンデマンドの計算、つまり「手動」の計算の場合、セルは値にアクセスする前に評価されません。
Dim value1 = GcSpreadSheet.Workbook.ActiveSheet.Cells(3, 2).Value '30
Dim value2 = GcSpreadSheet.Workbook.ActiveSheet.Cells(4, 2).Value '200
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 1).Value = 100
Dim value3 = GcSpreadSheet.Workbook.ActiveSheet.Cells(3, 2).Value 'まだ「30」です。
Dim value4 = GcSpreadSheet.Workbook.ActiveSheet.Cells(4, 2).Value 'まだ「200」です。

'しかし、計算を自動に変更すると、依存セルの値が変更されるとすぐに数式が更新されます。
GcSpreadSheet.Workbook.WorkbookSet.CalculationEngine.Calculation = GrapeCity.Spreadsheet.Calculation.Automatic