異なるSPREAD間で数式を設定出来ますか?
対象製品
SPREAD for Windows Forms 5.0J
詳細
同一コントロール上の異なるシート間で数式を設定することは可能ですが、異なるコントロール間で数式を設定することはできません。
代替策として、数式を使用してSPREAD1のセルに一時的に値を算出ておき、当セルのデータに変更が加えられた際に、SPREAD2のセルに値をコピーする方法が考えられます。
◎サンプルコード(VB)
◎サンプルコード(C#)
代替策として、数式を使用してSPREAD1のセルに一時的に値を算出ておき、当セルのデータに変更が加えられた際に、SPREAD2のセルに値をコピーする方法が考えられます。
◎サンプルコード(VB)
Dim WithEvents datamodel As FarPoint.Win.Spread.Model.DefaultSheetDataModel
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' SPREAD1に値をセットします
For i As Integer = 0 To 9
FpSpread1.ActiveSheet.SetValue(i, 0, i)
Next
' SUM関数(すべての引数値の和)を設定します
FpSpread1.ActiveSheet.SetFormula(10, 0, "SUM(A1:A10)")
FpSpread1.ActiveSheet.Cells(10, 0).BackColor = Color.LightCyan
' 初期値をSPREAD2にセットします
Dim obj As Object = FpSpread1.ActiveSheet.GetValue(10, 0)
FpSpread2.ActiveSheet.SetValue(0, 0, obj)
datamodel = FpSpread1.ActiveSheet.Models.Data
End Sub
Private Sub datamodel_Changed(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.Model.SheetDataModelEventArgs) Handles datamodel.Changed
' 数式を設定したセルの場合
If e.Row = 10 And e.Column = 0 Then
Dim obj As Object = datamodel.GetValue(e.Row, e.Column)
FpSpread2.ActiveSheet.SetValue(0, 0, obj)
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' SPREAD1に値をセットします
For i As Integer = 0 To 9
FpSpread1.ActiveSheet.SetValue(i, 0, i)
Next
' SUM関数(すべての引数値の和)を設定します
FpSpread1.ActiveSheet.SetFormula(10, 0, "SUM(A1:A10)")
FpSpread1.ActiveSheet.Cells(10, 0).BackColor = Color.LightCyan
' 初期値をSPREAD2にセットします
Dim obj As Object = FpSpread1.ActiveSheet.GetValue(10, 0)
FpSpread2.ActiveSheet.SetValue(0, 0, obj)
datamodel = FpSpread1.ActiveSheet.Models.Data
End Sub
Private Sub datamodel_Changed(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.Model.SheetDataModelEventArgs) Handles datamodel.Changed
' 数式を設定したセルの場合
If e.Row = 10 And e.Column = 0 Then
Dim obj As Object = datamodel.GetValue(e.Row, e.Column)
FpSpread2.ActiveSheet.SetValue(0, 0, obj)
End If
End Sub
◎サンプルコード(C#)
FarPoint.Win.Spread.Model.DefaultSheetDataModel datamodel;
private void Form1_Load(object sender, EventArgs e)
{
// SPREAD1に値をセットします
for (int i = 0; i < 10; i++)
{
fpSpread1.ActiveSheet.SetValue(i, 0, i);
}
// SUM関数(すべての引数値の和)を設定します
fpSpread1.ActiveSheet.SetFormula(10, 0, "SUM(A1:A10)");
fpSpread1.ActiveSheet.Cells[10, 0].BackColor = Color.LightCyan;
// 初期値をSPREAD2にセットします
object obj = fpSpread1.ActiveSheet.GetValue(10, 0);
fpSpread2.ActiveSheet.SetValue(0, 0, obj);
datamodel = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)fpSpread1.ActiveSheet.Models.Data;
datamodel.Changed += new FarPoint.Win.Spread.Model.SheetDataModelEventHandler(this.datamodel_Changed);
}
private void datamodel_Changed(object sender, FarPoint.Win.Spread.Model.SheetDataModelEventArgs e)
{
// 数式を設定したセルの場合
if (e.Row == 10 && e.Column == 0)
{
object obj = fpSpread1.ActiveSheet.GetValue(e.Row, e.Column);
fpSpread2.ActiveSheet.SetValue(0, 0, obj);
}
}
private void Form1_Load(object sender, EventArgs e)
{
// SPREAD1に値をセットします
for (int i = 0; i < 10; i++)
{
fpSpread1.ActiveSheet.SetValue(i, 0, i);
}
// SUM関数(すべての引数値の和)を設定します
fpSpread1.ActiveSheet.SetFormula(10, 0, "SUM(A1:A10)");
fpSpread1.ActiveSheet.Cells[10, 0].BackColor = Color.LightCyan;
// 初期値をSPREAD2にセットします
object obj = fpSpread1.ActiveSheet.GetValue(10, 0);
fpSpread2.ActiveSheet.SetValue(0, 0, obj);
datamodel = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)fpSpread1.ActiveSheet.Models.Data;
datamodel.Changed += new FarPoint.Win.Spread.Model.SheetDataModelEventHandler(this.datamodel_Changed);
}
private void datamodel_Changed(object sender, FarPoint.Win.Spread.Model.SheetDataModelEventArgs e)
{
// 数式を設定したセルの場合
if (e.Row == 10 && e.Column == 0)
{
object obj = fpSpread1.ActiveSheet.GetValue(e.Row, e.Column);
fpSpread2.ActiveSheet.SetValue(0, 0, obj);
}
}
関連情報
- 階層表示で親階層と子階層の水平スクロールを同期させたい
- 【Tips】異なるSPREAD間で列幅の同期を実装する方法
- 複数シート間でのスクロール同期を実装する方法 (シート上にて表示されている先頭行/列が変更されたタイミングの取得)
キーワード
「同期」
この文書は、以前は次のFAQ IDで公開されていました : 12990