選択された行数やセル範囲を取得する方法

文書番号 : 33565     文書種別 : 使用方法     登録日 : 2012/11/14     最終更新日 : 2012/11/14
文書を印刷する
対象製品
SPREAD for Windows Forms 7.0J
詳細
業務によっては、複数選択モードや拡張選択モードを定義した場合の選択行数、または標準モードを定義した場合の選択範囲を取得したいことがあります。

これらの情報を取得するには幾つかありますが、代表的な方法は次の通りです。

 ◎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


◎サンプルコード(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);
  }
関連情報
キーワード
「選択セル」