作成日: 2019/07/08 最終更新日: 2019/07/08
文書種別
不具合
状況
修正済み
詳細
罫線が設定された結合セルに対してCopyRangeメソッドの実行した際に、結合と罫線が正しくコピーされない場合があります。
■サンプルコード(VB.NET)
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' セルの結合
FpSpread1.ActiveSheet.AddSpanCell(0, 1, 1, 14)
FpSpread1.ActiveSheet.AddSpanCell(1, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(1, 6, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 11, 1, 3)
FpSpread1.ActiveSheet.AddSpanCell(2, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 8, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 12, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(3, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(3, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(4, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(4, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(4, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(5, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(5, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 15, 1, 4)
' 罫線の設定
Dim rightBorder As New FarPoint.Win.ComplexBorderSide(FarPoint.Win.ComplexBorderSideStyle.ThinLine, Color.Black)
Dim bord As New FarPoint.Win.ComplexBorder(rightBorder, rightBorder, rightBorder, rightBorder)
FpSpread1.ActiveSheet.SetInsideBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
FpSpread1.ActiveSheet.SetOutlineBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
' テストデータの設定
FpSpread1.ActiveSheet.Cells(0, 1).Value = "test"
' 現象確認
FpSpread1.Sheets(0).CopyRange(2, -1, 8, -1, 1, -1, False)
FpSpread1.Sheets(0).CopyRange(0, -1, 15, -1, 1, -1, False)
End Sub
' セルの結合
FpSpread1.ActiveSheet.AddSpanCell(0, 1, 1, 14)
FpSpread1.ActiveSheet.AddSpanCell(1, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(1, 6, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 11, 1, 3)
FpSpread1.ActiveSheet.AddSpanCell(2, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 8, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 12, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(3, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(3, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(4, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(4, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(4, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(5, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(5, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 15, 1, 4)
' 罫線の設定
Dim rightBorder As New FarPoint.Win.ComplexBorderSide(FarPoint.Win.ComplexBorderSideStyle.ThinLine, Color.Black)
Dim bord As New FarPoint.Win.ComplexBorder(rightBorder, rightBorder, rightBorder, rightBorder)
FpSpread1.ActiveSheet.SetInsideBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
FpSpread1.ActiveSheet.SetOutlineBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
' テストデータの設定
FpSpread1.ActiveSheet.Cells(0, 1).Value = "test"
' 現象確認
FpSpread1.Sheets(0).CopyRange(2, -1, 8, -1, 1, -1, False)
FpSpread1.Sheets(0).CopyRange(0, -1, 15, -1, 1, -1, False)
End Sub
回避方法
Service Pack 2(v12.0.4503.2012)で修正済み。
Service Pack を適用せずに対処する方法としては、クリップボードの機能を用いてセル範囲をコピーすることで現象が回避可能です。
■サンプルコード(VB.NET)
Service Pack を適用せずに対処する方法としては、クリップボードの機能を用いてセル範囲をコピーすることで現象が回避可能です。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' セルの結合
FpSpread1.ActiveSheet.AddSpanCell(0, 1, 1, 14)
FpSpread1.ActiveSheet.AddSpanCell(1, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(1, 6, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 11, 1, 3)
FpSpread1.ActiveSheet.AddSpanCell(2, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 8, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 12, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(3, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(3, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(4, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(4, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(4, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(5, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(5, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 15, 1, 4)
' 罫線の設定
Dim rightBorder As New FarPoint.Win.ComplexBorderSide(FarPoint.Win.ComplexBorderSideStyle.ThinLine, Color.Black)
Dim bord As New FarPoint.Win.ComplexBorder(rightBorder, rightBorder, rightBorder, rightBorder)
FpSpread1.ActiveSheet.SetInsideBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
FpSpread1.ActiveSheet.SetOutlineBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
' テストデータの設定
FpSpread1.ActiveSheet.Cells(0, 1).Value = "test"
' 現象確認
'FpSpread1.Sheets(0).CopyRange(2, -1, 8, -1, 1, -1, False)
'FpSpread1.Sheets(0).CopyRange(0, -1, 15, -1, 1, -1, False)
' 回避策
FpSpread1.ActiveSheet.ClipboardCopy(New FarPoint.Win.Spread.Model.CellRange(2, -1, 1, -1))
FpSpread1.ActiveSheet.SetActiveCell(8, 0)
FpSpread1.ActiveSheet.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All)
FpSpread1.ActiveSheet.ClipboardCopy(New FarPoint.Win.Spread.Model.CellRange(0, -1, 1, -1))
FpSpread1.ActiveSheet.SetActiveCell(15, 0)
FpSpread1.ActiveSheet.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All)
' 回避策(選択状態の解除とアクティブセルの移動)
FpSpread1.ActiveSheet.ClearSelection()
FpSpread1.ActiveSheet.SetActiveCell(0, 0)
End Sub
' セルの結合
FpSpread1.ActiveSheet.AddSpanCell(0, 1, 1, 14)
FpSpread1.ActiveSheet.AddSpanCell(1, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(1, 6, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(1, 11, 1, 3)
FpSpread1.ActiveSheet.AddSpanCell(2, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 8, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(2, 12, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(3, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(3, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(4, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(4, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(4, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 2, 1, 4)
FpSpread1.ActiveSheet.AddSpanCell(5, 8, 1, 2)
FpSpread1.ActiveSheet.AddSpanCell(5, 10, 1, 5)
FpSpread1.ActiveSheet.AddSpanCell(5, 15, 1, 4)
' 罫線の設定
Dim rightBorder As New FarPoint.Win.ComplexBorderSide(FarPoint.Win.ComplexBorderSideStyle.ThinLine, Color.Black)
Dim bord As New FarPoint.Win.ComplexBorder(rightBorder, rightBorder, rightBorder, rightBorder)
FpSpread1.ActiveSheet.SetInsideBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
FpSpread1.ActiveSheet.SetOutlineBorder(New FarPoint.Win.Spread.Model.CellRange(0, 1, 6, 18), bord)
' テストデータの設定
FpSpread1.ActiveSheet.Cells(0, 1).Value = "test"
' 現象確認
'FpSpread1.Sheets(0).CopyRange(2, -1, 8, -1, 1, -1, False)
'FpSpread1.Sheets(0).CopyRange(0, -1, 15, -1, 1, -1, False)
' 回避策
FpSpread1.ActiveSheet.ClipboardCopy(New FarPoint.Win.Spread.Model.CellRange(2, -1, 1, -1))
FpSpread1.ActiveSheet.SetActiveCell(8, 0)
FpSpread1.ActiveSheet.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All)
FpSpread1.ActiveSheet.ClipboardCopy(New FarPoint.Win.Spread.Model.CellRange(0, -1, 1, -1))
FpSpread1.ActiveSheet.SetActiveCell(15, 0)
FpSpread1.ActiveSheet.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All)
' 回避策(選択状態の解除とアクティブセルの移動)
FpSpread1.ActiveSheet.ClearSelection()
FpSpread1.ActiveSheet.SetActiveCell(0, 0)
End Sub
旧文書番号
84219