Home » Excel VBA Rangeオブジェクト » SpecialCellsメソッド » SpecialCells(xlCellTypeVisible)で取得できる可視セルの最初のセルを取得したい

SpecialCells(xlCellTypeVisible)で取得できる可視セルの最初のセルを取得したい

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2212 ビルド15928.20216 Microsoft Store)

「vba xlCellTypeVisible 一番最初」
という検索でアクセスがありました。

Excel VBAの、Rangeオブジェクトに用意されているSpecialCellsメソッドの引数に、

定数xlCellTypeVisibleを指定して取得できる

可視セルを表すRangeオブジェクトの中から、先頭のセル・最初のセルを取得するにはどのようなコードを書けばいいのかを調べていらしたのでしょうか。

[スポンサードリンク]

可視セルの最初のセルを取得するサンプルマクロ

以下のマクロを実行すると、A1:G7セルの中で可視セルの先頭セルを選択して、そのセル番地がメッセージボックスに表示されます。

Sub 可視セルの先頭セルを取得する()
 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)で取得できる可視セルの最初のセルを取得したい

「SpecialCellsメソッド」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.