行を削除したときに自動計算が実行されないことがある
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
行を削除したときに自動計算が実行されないことがあります。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンをクリックします
--B2セル以降の数式が再計算されません
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' 数式の設定
FpSpread1.ActiveSheet.AutoCalculation = True
FpSpread1.ActiveSheet.Columns(1).Formula = "Row()"
' テストデータの設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.SetValue(i, 2, String.Format("C{0}", i))
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 2行目を削除
FpSpread1.ActiveSheet.RemoveRows(1, 1)
End Sub
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンをクリックします
--B2セル以降の数式が再計算されません
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' 数式の設定
FpSpread1.ActiveSheet.AutoCalculation = True
FpSpread1.ActiveSheet.Columns(1).Formula = "Row()"
' テストデータの設定
For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.SetValue(i, 2, String.Format("C{0}", i))
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 2行目を削除
FpSpread1.ActiveSheet.RemoveRows(1, 1)
End Sub
回避方法
Service Pack 3(v7.0.2014.2008)で修正済み。
Service Pack 3(v7.0.2014.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
行の削除後にRecalculateAllメソッドを実行します。
【サンプルコード】
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 2行目を削除
FpSpread1.ActiveSheet.RemoveRows(1, 1)
' 再計算
FpSpread1.ActiveSheet.RecalculateAll()
End Sub
Service Pack 3(v7.0.2014.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
行の削除後にRecalculateAllメソッドを実行します。
【サンプルコード】
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 2行目を削除
FpSpread1.ActiveSheet.RemoveRows(1, 1)
' 再計算
FpSpread1.ActiveSheet.RecalculateAll()
End Sub