2016-04-09 5 views
2

テーブルの現在のセルが最初の行にあるかどうかを確認する必要があります。シートだけではなく、自分のテーブルの内部をチェックする必要があります。私はこれに関する情報を見つけることができませんでした。これは数式を使って可能ですか?このような場合は特別な操作をしたいと思います。現在のセルがテーブルの最初の行にあるかどうかをチェックする方法は?

答えて

2

単純な式を構築するネイティブワークシート関数を使用して、ヘッダー行を減算することにより、相対行ListObject内の位置(別名構造化)テーブルを検索することができます。

=ROW()-ROW(Table1[#Headers]) 

結果は、テーブルの最初の行にあるかどうかを決定するブール値の結果を返すようにと比較することができます。

listobject_relativerow

2

考慮する:

Sub WhereIsTheActiveCell() 
    Dim EquivRange As Range, r As Range 
    Dim lo As ListObject 
    Dim nFirstRow As Long, nLastRow As Long 

    Set lo = ActiveSheet.ListObjects(1) 

    With lo 
     Set EquivRange = .DataBodyRange 
     nFirstRow = EquivRange.Row 
     nLastRow = EquivRange.Rows.Count + EquivRange.Row - 1 
     If ActiveCell.Row = nFirstRow Then 
      MsgBox "activecell is in the first data row of the table" 
     ElseIf ActiveCell.Row = nFirstRow - 1 Then 
      MsgBox "activecell is the the header row of the table" 
     End If 
    End With 
End Sub 
+0

実際に明示[.HeaderRowRangeプロパティ](https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.listobject.headerrowrange.aspx)がありますListObjectテーブルの場合は、[。DataBodyRangeプロパティ](https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.listobject.databodyrange.aspx)に追加します。 – Jeeped

+0

@Jeeped昨日、私の質問で助けてくれてありがとうとありがとう。 –

+0

心配はいりません。 javascriptの変換はもっと簡単になるように見えますが、ランダムでも楽しいです。 – Jeeped