作成日: 2026/09/24 最終更新日: 2026/09/24
文書種別
不具合
状況
回避方法あり
詳細
FrozenTrailingRowCountを設定して末尾行を固定している場合、固定行の先頭セルに対してキーボードでアクティブセルを設定すると、セルの編集を開始できません。
この現象は、以下の操作で発生します。
・下矢印キーで固定した末尾行の先頭セルへ移動する
・SetActiveCellメソッドなどで固定した末尾行の先頭セルをアクティブにする
この現象は、以下の操作で発生します。
・下矢印キーで固定した末尾行の先頭セルへ移動する
・SetActiveCellメソッドなどで固定した末尾行の先頭セルをアクティブにする
回避方法
独自のSetActiveCellメソッドの実装およびEnterCellイベントを使用して、アクティブセルが末尾の固定行列に入った場合にビューポートを適切に設定することで回避可能です。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With FpSpread1.ActiveSheet
.RowCount = 10
.ColumnCount = 1
.FrozenTrailingRowCount = 5
Dim ct As New FarPoint.Win.Spread.CellType.NumberCellType()
ct.DecimalPlaces = 0
.Columns(0).CellType = ct
End With
Me.KeyPreview = True
AddHandler Me.KeyDown, AddressOf Form1_KeyDown
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
If e.KeyCode = Keys.F1 Then
e.SuppressKeyPress = True
'FpSpread1.ActiveSheet.SetActiveCell(5, 0)
' 独自のSetActiveCellメソッドを使用して、アクティブセルを設定する
SetActiveCell(5, 0)
End If
End Sub
Private Sub SetActiveCell(ByVal row As Integer, ByVal column As Integer)
Dim rowPane As Integer = FpSpread1.GetActiveRowViewportIndex()
Dim columnPane As Integer = FpSpread1.GetActiveColumnViewportIndex()
Dim sheet = FpSpread1.ActiveSheet
sheet.SetActiveCell(row, column)
If row < sheet.FrozenRowCount Then
rowPane = -1
ElseIf row >= sheet.RowCount - sheet.FrozenTrailingRowCount Then
rowPane = FpSpread1.GetRowViewportCount()
End If
If column < sheet.FrozenColumnCount Then
columnPane = -1
ElseIf column >= sheet.ColumnCount - sheet.FrozenTrailingColumnCount Then
columnPane = FpSpread1.GetColumnViewportCount()
End If
FpSpread1.SetActiveViewport(rowPane, columnPane)
End Sub
' FpSpread1のEnterCellイベントで、アクティブセルが末尾の固定行列に入った場合にビューポートを適切に設定する
Private Sub FpSpread1_EnterCell(sender As Object, e As FarPoint.Win.Spread.EnterCellEventArgs) Handles FpSpread1.EnterCell
Dim rowPane As Integer = FpSpread1.GetActiveRowViewportIndex()
Dim columnPane As Integer = FpSpread1.GetActiveColumnViewportIndex()
Dim row As Integer = e.Row
Dim column As Integer = e.Column
Dim sheet = FpSpread1.ActiveSheet
If row < sheet.FrozenRowCount Then
rowPane = -1
ElseIf row >= sheet.RowCount - sheet.FrozenTrailingRowCount Then
rowPane = FpSpread1.GetRowViewportCount()
End If
If column < sheet.FrozenColumnCount Then
columnPane = -1
ElseIf column >= sheet.ColumnCount - sheet.FrozenTrailingColumnCount Then
columnPane = FpSpread1.GetColumnViewportCount()
End If
FpSpread1.SetActiveViewport(rowPane, columnPane)
End Sub