作成日: 2018/12/10 最終更新日: 2018/12/18
文書種別
不具合
状況
修正済み
詳細
■事象
特定のセル型を設定したセルに、別のセル型を適用した上で値を設定した場合に、そのセルを含む列でソートするとセルのTextプロパティから値を取得できません。
■サンプルコード(VB.NET)
■問題の再現状況
上記のコードを実行すると
Cell.Text: 4
とコンソールに出力されるべきところ、
Cell.Text:
とコンソールに出力されます。
■備考
変更する前のセル型によって、問題の発生状況が異なります。
・問題が発生しない(テキスト型セルなど)
・値を取得できない(マスク型セルなど)
・誤った書式が適用された値が取得される(通貨型セルなど)
特定のセル型を設定したセルに、別のセル型を適用した上で値を設定した場合に、そのセルを含む列でソートするとセルのTextプロパティから値を取得できません。
■サンプルコード(VB.NET)
' 10行×2列のレイアウトとします。
Me.FpSpread1.ActiveSheet.RowCount = 10
Me.FpSpread1.ActiveSheet.ColumnCount = 2
' 1列目にセル型を適用します。
' ※以下のコードでは、コンボボックス型セルを適用しています。
Dim defCell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
defCell.Items = New String() {"1", "2", "3"}
Me.FpSpread1.ActiveSheet.Columns(0).CellType = defCell
' サンプルデータを設定します。
For i As Integer = 0 To Me.FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 0).Value = 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = i
Next
' "A3"セルのセル型を変更し、値を設定します。
FpSpread1.ActiveSheet.Cells(2, 0).CellType = New FarPoint.Win.Spread.CellType.GeneralCellType()
FpSpread1.ActiveSheet.Cells(2, 0).Value = 4
' 1列目でソート(降順)します。
' ※上で設定したセルを含む行が一番上に来ます。
FpSpread1.ActiveSheet.SortRows(0, False, True)
' 1行1列目のセルのTextプロパティの値をコンソールに出力します。
Console.WriteLine("Cell.Text: {0}", FpSpread1.ActiveSheet.Cells(0, 0).Text)
Me.FpSpread1.ActiveSheet.RowCount = 10
Me.FpSpread1.ActiveSheet.ColumnCount = 2
' 1列目にセル型を適用します。
' ※以下のコードでは、コンボボックス型セルを適用しています。
Dim defCell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
defCell.Items = New String() {"1", "2", "3"}
Me.FpSpread1.ActiveSheet.Columns(0).CellType = defCell
' サンプルデータを設定します。
For i As Integer = 0 To Me.FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.Cells(i, 0).Value = 1
FpSpread1.ActiveSheet.Cells(i, 1).Value = i
Next
' "A3"セルのセル型を変更し、値を設定します。
FpSpread1.ActiveSheet.Cells(2, 0).CellType = New FarPoint.Win.Spread.CellType.GeneralCellType()
FpSpread1.ActiveSheet.Cells(2, 0).Value = 4
' 1列目でソート(降順)します。
' ※上で設定したセルを含む行が一番上に来ます。
FpSpread1.ActiveSheet.SortRows(0, False, True)
' 1行1列目のセルのTextプロパティの値をコンソールに出力します。
Console.WriteLine("Cell.Text: {0}", FpSpread1.ActiveSheet.Cells(0, 0).Text)
■問題の再現状況
上記のコードを実行すると
Cell.Text: 4
とコンソールに出力されるべきところ、
Cell.Text:
とコンソールに出力されます。
■備考
変更する前のセル型によって、問題の発生状況が異なります。
・問題が発生しない(テキスト型セルなど)
・値を取得できない(マスク型セルなど)
・誤った書式が適用された値が取得される(通貨型セルなど)
回避方法
Service Pack 2(v11.0.4503.2012)で修正済み。
Service Pack 2を適用せずに対処する方法としては、以下のいずれかの方法が有効です。
Service Pack 2を適用せずに対処する方法としては、以下のいずれかの方法が有効です。
- SheetViewクラスのGetTextメソッドを使用する
セルのTextプロパティではなく、SheetViewクラスのGetTextメソッドを使用して、セルの値を取得してください。
FpSpread1.ActiveSheet.GetText(0, 0) - SortRangeメソッドでソートする
コード上でSortRowsメソッドを使用してソートしている場合、SortRangeメソッドを使用してソートする方法も有効です。ただし、この方法は、非連結データの場合しかできません。
旧文書番号
83454