作成日: 2026/06/03 最終更新日: 2026/06/03
文書種別
技術情報
詳細
(動的)配列数式をセルに設定すると、その計算結果は数式を設定したセルだけでなく複数セルに自動展開(スピル)されます。この時、任意のセルに計算結果がスピルされているかどうかは、IRange インターフェースの HasSpillプロパティで確認することができます。
また、(動的)配列数式の引数を変更することでスピル範囲が変化することがありますが、引数を変更した際に発生したFpSpreadクラスのChangeイベントなどでHasSpillプロパティを確認すると、引数変更が反映されずスピル範囲の変更が取得できません。引数変更を即時反映してスピル範囲を取得したい場合には、CalculationEngine クラスのCalculationOnDemandMode プロパティをOffに設定します。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 数式の引数が変更された際に即時反映する
FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalculationOnDemandMode = CalculationOnDemandMode.Off
Text = $"CalculationOnDemandMode.{FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalculationOnDemandMode.ToString()}"
' 動的配列数式を有効にする
FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures Or CalcFeatures.DynamicArray
FpSpread1.ActiveSheet.Cells("A1").Value = 1
FpSpread1.ActiveSheet.Cells("B1").Value = 1
' 動的配列数式を設定する
FpSpread1.ActiveSheet.Cells("A2").Formula = "SEQUENCE(A1,B1)"
End Sub
Private Sub FpSpread1_Change(sender As Object, e As ChangeEventArgs) Handles FpSpread1.Change
MessageBox.Show($"({e.Row},{e.Column})が変更されました。{vbCrLf}A3.HasSpill:{FpSpread1.AsWorkbook().ActiveSheet.Cells("A3").HasSpill}")
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// 数式の引数が変更された際に即時反映する
fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalculationOnDemandMode = CalculationOnDemandMode.Off;
Text = $"CalculationOnDemandMode.{fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalculationOnDemandMode.ToString()}";
// 動的配列数式を有効にする
fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures |= CalcFeatures.DynamicArray;
fpSpread1.ActiveSheet.Cells["A1"].Value = 1;
fpSpread1.ActiveSheet.Cells["B1"].Value = 1;
// 動的配列数式を設定する
fpSpread1.ActiveSheet.Cells["A2"].Formula = "SEQUENCE(A1,B1)";
}
private void fpSpread1_Change(object sender, FarPoint.Win.Spread.ChangeEventArgs e)
{
MessageBox.Show($"({e.Row},{e.Column})が変更されました。\nA3.HasSpill:{fpSpread1.AsWorkbook().ActiveSheet.Cells["A3"].HasSpill}");
}
<実行イメージ>