「vba xlCellTypeVisible 一番最初」
という検索でアクセスがありました。
Excel VBAの、Rangeオブジェクトに用意されているSpecialCellsメソッドの引数に、
定数xlCellTypeVisibleを指定して取得できる
可視セルを表すRangeオブジェクトの中から、先頭のセル・最初のセルを取得するにはどのようなコードを書けばいいのかを調べていらしたのでしょうか。
可視セルの最初のセルを取得するサンプルマクロ
以下のマクロを実行すると、A1:G7セルの中で可視セルの先頭セルを選択して、そのセル番地がメッセージボックスに表示されます。
With Range("A1:G7").SpecialCells(xlCellTypeVisible).Item(1)
.Select
MsgBox .Address(False, False)
End With
End Sub
1行目を非表示にしておいて実行すれば、A2セルが選択され「A2」がメッセージボックスに表示されます。
A:B列と1:3行目を非表示にした状態で実行すれば、C4セルが選択され「C4」がメッセージボックスに表示されます。
ItemプロパティでコレクションとしてのRangeから要素を取得できる
ポイントはRangeオブジェクトのItemプロパティです。
With Range("A1:G7").SpecialCells(xlCellTypeVisible).Item(1)
Range.Itemプロパティを使えば、コレクションとしてのRangeオブジェクトから、要素である単独のRangeオブジェクトを取得できます。
引数に「1」を指定することで、コレクションとしてのRangeオブジェクトの中から、最初のセルを表すRangeオブジェクトを取得できます。
.Itemは省略も可能
非表示に設定されている、Rangeオブジェクト既定メンバーである_Defaultプロパティは、
.Itemプロパティと同じ作りになっていますから、先ほどのコードから「.Item」を省略することも可能です。
先ほどの
With Range("A1:G7").SpecialCells(xlCellTypeVisible).Item(1)
から「.Item」を省略した以下のような書き方でも、
With Range("A1:G7").SpecialCells(xlCellTypeVisible)(1)
同じように可視セルの先頭セルを表すRangeオブジェクトを取得できます。
私はこの「.Item」を省略した書き方をおすすめする気にはなれませんが。
Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » SpecialCells(xlCellTypeVisible)で取得できる可視セルの最初のセルを取得したい