セルが選択されているかどうか判断するには?

文書番号 : 17432     文書種別 : 使用方法     最終更新日 : 2005/04/29
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
詳細
指定したセルがユーザーによって選択されているか判断し、選択されている場合にのみ処理を行うには Sheet クラスの GetBlocks メソッドで選択されているセルの範囲を取得し、Range 構造体の Contains メソッドでセルが含まれているか否かを確認します。

[Visual Basic]
Dim bolSelected As Boolean = False
Dim objRange, objRanges() As GrapeCity.Win.ElTabelle.Range
'選択されているセル範囲をすべて取得する
objRanges = Sheet1.GetBlocks(GrapeCity.Win.ElTabelle.BlocksType.Selection)
For Each objRange In objRanges
  'A1セルを含むセル範囲がないか確認する
  If objRange.Contains(New GrapeCity.Win.ElTabelle.Position("A1")) = True Then
    '含むセルがある場合
    Debug.WriteLine("A1セルは" & objRange.Expression & "で選択されています")
    bolSelected = True
    Exit For
  End If
Next

'含むセルがなかった場合
If bolSelected = False Then
  Debug.WriteLine("A1セルを含むセル範囲はありません")
End If


[C#]
bool bolSelected = false;
GrapeCity.Win.ElTabelle.Range[] objRanges;
//選択されているセル範囲をすべて取得する
objRanges = sheet1.GetBlocks(GrapeCity.Win.ElTabelle.BlocksType.Selection);
foreach(GrapeCity.Win.ElTabelle.Range objRange in objRanges)
{
  //A1セルを含むセル範囲がないか確認する
  if(objRange.Contains(new GrapeCity.Win.ElTabelle.Position("A1")) == true)
  {
    //含むセルがある場合
    System.Diagnostics.Debug.WriteLine("A1セルは" + objRange.Expression + "で選択されています");
    bolSelected = true;
    break;
  }
}

//含むセルがなかった場合
if(bolSelected == false)
{
  System.Diagnostics.Debug.WriteLine("A1セルを含むセル範囲はありません");
}


なお、Sheet クラスの SelectionType プロパティが Single に設定されている場合はセル範囲を考慮する必要がありません。このため、次のコードだけで確認できます。

[Visual Basic]
If Sheet1.ActivePosition.Expression = "A1" Then
  Debug.WriteLine("A1セルは選択されています")
Else
  Debug.WriteLine("A1セルは選択されていません")
End If


[C#]
if(sheet1.ActivePosition.Expression == "A1")
{
  System.Diagnostics.Debug.WriteLine("A1セルは選択されています");
}
else
{
  System.Diagnostics.Debug.WriteLine("A1セルは選択されていません");
}


さらに、Sheet クラスには SelectionSizeChanged というイベントがあります。このイベントの引数で、ユーザーが選択したセルを取得できるため、処理によってはこのイベント引数を使うほうが効率的です。

常にユーザーが選択したセル(アクティブなセル)に対して、必ず処理を行うのであれば Sheet クラスの ActiveCell プロパティを使うのが簡単です。
キーワード
HowTo

この文書は、以前は次のFAQ IDで公開されていました : 6992