選択された行数やセル範囲を取得する方法
対象製品
SPREAD for Windows Forms 7.0J
詳細
業務によっては、複数選択モードや拡張選択モードを定義した場合の選択行数、または標準モードを定義した場合の選択範囲を取得したいことがあります。
これらの情報を取得するには幾つかありますが、代表的な方法は次の通りです。
◎ISheetSelectionModelインタフェースを利用
◎CellRangeクラスを利用
◎SheetViewクラスのSelectionCountプロパティを利用
例えば拡張選択モードを定義した場合、複数行の選択は(1)Ctrlを押しながらのマウスクリック、(2)行ドラッグなどによって行うことが出来ますが、この場合、ユーザーの操作によっても取得出来る結果は異なります。つまり、これらは定義された選択モードなどにも依存しますのでご注意ください。
以下のサンプルコードでは、上記機能によって必要な情報の取得を実現しています。十分な動作確認のうえ、用途によって使い分けて下さい。なお、各機能の詳細については製品ヘルプをご参照ください。
◎サンプルコード(VB)
◎サンプルコード(C#)
これらの情報を取得するには幾つかありますが、代表的な方法は次の通りです。
◎ISheetSelectionModelインタフェースを利用
◎CellRangeクラスを利用
◎SheetViewクラスのSelectionCountプロパティを利用
例えば拡張選択モードを定義した場合、複数行の選択は(1)Ctrlを押しながらのマウスクリック、(2)行ドラッグなどによって行うことが出来ますが、この場合、ユーザーの操作によっても取得出来る結果は異なります。つまり、これらは定義された選択モードなどにも依存しますのでご注意ください。
以下のサンプルコードでは、上記機能によって必要な情報の取得を実現しています。十分な動作確認のうえ、用途によって使い分けて下さい。なお、各機能の詳細については製品ヘルプをご参照ください。
※実行する際にはフォーム上にシート、および3つのコマンドボタンを配置してください。
◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ExtendedSelect
FpSpread1.ActiveSheet.RowCount = 5
FpSpread1.ActiveSheet.ColumnCount = 5
FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never
FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Debug.WriteLine("----------------------------------------")
Debug.WriteLine("ISheetSelectionModelインタフェースを利用")
Debug.WriteLine("----------------------------------------")
Debug.WriteLine("選択された開始行インデックス:" & FpSpread1.ActiveSheet.Models.Selection.AnchorRow)
Debug.WriteLine("選択された開始列インデックス:" & FpSpread1.ActiveSheet.Models.Selection.AnchorColumn)
Debug.WriteLine("選択された最終行インデックス:" & FpSpread1.ActiveSheet.Models.Selection.LeadRow)
Debug.WriteLine("選択された最終列インデックス:" & FpSpread1.ActiveSheet.Models.Selection.LeadColumn)
Debug.WriteLine("選択された行数:" & FpSpread1.ActiveSheet.Models.Selection.LeadRow - FpSpread1.ActiveSheet.Models.Selection.AnchorRow + 1)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim cr() As FarPoint.Win.Spread.Model.CellRange
cr = FpSpread1.ActiveSheet.GetSelections()
Dim i As Integer
For i = 0 To cr.Length - 1
Debug.WriteLine("---------------------")
Debug.WriteLine("CellRangeクラスを利用")
Debug.WriteLine("---------------------")
Debug.WriteLine("選択された先頭行インデックス:" & cr(i).Row())
Debug.WriteLine("選択された行数:" & cr(i).RowCount())
Debug.WriteLine("選択された先頭列インデックス:" & cr(i).Column())
Debug.WriteLine("選択された列数:" & cr(i).ColumnCount())
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Debug.WriteLine("-----------------------------------------------")
Debug.WriteLine("SheetViewクラスのSelectionCountプロパティを利用")
Debug.WriteLine("-----------------------------------------------")
Debug.WriteLine("選択された行数:" & FpSpread1.ActiveSheet.SelectionCount)
End Sub
FpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ExtendedSelect
FpSpread1.ActiveSheet.RowCount = 5
FpSpread1.ActiveSheet.ColumnCount = 5
FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never
FpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Debug.WriteLine("----------------------------------------")
Debug.WriteLine("ISheetSelectionModelインタフェースを利用")
Debug.WriteLine("----------------------------------------")
Debug.WriteLine("選択された開始行インデックス:" & FpSpread1.ActiveSheet.Models.Selection.AnchorRow)
Debug.WriteLine("選択された開始列インデックス:" & FpSpread1.ActiveSheet.Models.Selection.AnchorColumn)
Debug.WriteLine("選択された最終行インデックス:" & FpSpread1.ActiveSheet.Models.Selection.LeadRow)
Debug.WriteLine("選択された最終列インデックス:" & FpSpread1.ActiveSheet.Models.Selection.LeadColumn)
Debug.WriteLine("選択された行数:" & FpSpread1.ActiveSheet.Models.Selection.LeadRow - FpSpread1.ActiveSheet.Models.Selection.AnchorRow + 1)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim cr() As FarPoint.Win.Spread.Model.CellRange
cr = FpSpread1.ActiveSheet.GetSelections()
Dim i As Integer
For i = 0 To cr.Length - 1
Debug.WriteLine("---------------------")
Debug.WriteLine("CellRangeクラスを利用")
Debug.WriteLine("---------------------")
Debug.WriteLine("選択された先頭行インデックス:" & cr(i).Row())
Debug.WriteLine("選択された行数:" & cr(i).RowCount())
Debug.WriteLine("選択された先頭列インデックス:" & cr(i).Column())
Debug.WriteLine("選択された列数:" & cr(i).ColumnCount())
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Debug.WriteLine("-----------------------------------------------")
Debug.WriteLine("SheetViewクラスのSelectionCountプロパティを利用")
Debug.WriteLine("-----------------------------------------------")
Debug.WriteLine("選択された行数:" & FpSpread1.ActiveSheet.SelectionCount)
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, System.EventArgs e)
{
fpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ExtendedSelect;
fpSpread1.ActiveSheet.RowCount = 5;
fpSpread1.ActiveSheet.ColumnCount = 5;
fpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never;
fpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never;
}
private void button1_Click(object sender, System.EventArgs e)
{
Console.WriteLine("----------------------------------------");
Console.WriteLine("ISheetSelectionModelインタフェースを利用");
Console.WriteLine("----------------------------------------");
Console.WriteLine("選択された開始行インデックス:" + fpSpread1.ActiveSheet.Models.Selection.AnchorRow);
Console.WriteLine("選択された開始列インデックス:" + fpSpread1.ActiveSheet.Models.Selection.AnchorColumn);
Console.WriteLine("選択された最終行インデックス:" + fpSpread1.ActiveSheet.Models.Selection.LeadRow);
Console.WriteLine("選択された最終列インデックス:" + fpSpread1.ActiveSheet.Models.Selection.LeadColumn);
Console.WriteLine("選択された行数:" + (fpSpread1.ActiveSheet.Models.Selection.LeadRow - fpSpread1.ActiveSheet.Models.Selection.AnchorRow + 1));
}
private void button2_Click(object sender, System.EventArgs e)
{
FarPoint.Win.Spread.Model.CellRange[] cr;
cr = fpSpread1.ActiveSheet.GetSelections();
for (int i = 0; i <= cr.Length -1 ; i++)
{
Console.WriteLine("---------------------");
Console.WriteLine("CellRangeクラスを利用");
Console.WriteLine("---------------------");
Console.WriteLine("選択された先頭行インデックス:" + cr[i].Row);
Console.WriteLine("選択された行数:" + cr[i].RowCount);
Console.WriteLine("選択された先頭列インデックス:" + cr[i].Column);
Console.WriteLine("選択された列数:" + cr[i].ColumnCount);
}
}
private void button3_Click(object sender, System.EventArgs e)
{
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("SheetViewクラスのSelectionCountプロパティを利用");
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("選択された行数:" + fpSpread1.ActiveSheet.SelectionCount);
}
{
fpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ExtendedSelect;
fpSpread1.ActiveSheet.RowCount = 5;
fpSpread1.ActiveSheet.ColumnCount = 5;
fpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never;
fpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Never;
}
private void button1_Click(object sender, System.EventArgs e)
{
Console.WriteLine("----------------------------------------");
Console.WriteLine("ISheetSelectionModelインタフェースを利用");
Console.WriteLine("----------------------------------------");
Console.WriteLine("選択された開始行インデックス:" + fpSpread1.ActiveSheet.Models.Selection.AnchorRow);
Console.WriteLine("選択された開始列インデックス:" + fpSpread1.ActiveSheet.Models.Selection.AnchorColumn);
Console.WriteLine("選択された最終行インデックス:" + fpSpread1.ActiveSheet.Models.Selection.LeadRow);
Console.WriteLine("選択された最終列インデックス:" + fpSpread1.ActiveSheet.Models.Selection.LeadColumn);
Console.WriteLine("選択された行数:" + (fpSpread1.ActiveSheet.Models.Selection.LeadRow - fpSpread1.ActiveSheet.Models.Selection.AnchorRow + 1));
}
private void button2_Click(object sender, System.EventArgs e)
{
FarPoint.Win.Spread.Model.CellRange[] cr;
cr = fpSpread1.ActiveSheet.GetSelections();
for (int i = 0; i <= cr.Length -1 ; i++)
{
Console.WriteLine("---------------------");
Console.WriteLine("CellRangeクラスを利用");
Console.WriteLine("---------------------");
Console.WriteLine("選択された先頭行インデックス:" + cr[i].Row);
Console.WriteLine("選択された行数:" + cr[i].RowCount);
Console.WriteLine("選択された先頭列インデックス:" + cr[i].Column);
Console.WriteLine("選択された列数:" + cr[i].ColumnCount);
}
}
private void button3_Click(object sender, System.EventArgs e)
{
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("SheetViewクラスのSelectionCountプロパティを利用");
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("選択された行数:" + fpSpread1.ActiveSheet.SelectionCount);
}
関連情報
- 【セル型全般】 「標準モード(OperationMode.Normal)」および「行選択モード(OperationMode.RowMode)」を定義した場合、アクティブセルの背景色が選択色として表示されません
- 選択された行の背景色を変更できますか?
- 単一選択モード(SingleSelect)で特定行を選択状態にするには
- コードで任意のセル範囲や行、列を選択状態にしたい
キーワード
「選択セル」