プロシージャ内で自分のセルの番地 ThisCell

以下の関数を標準モジュールに書いて、ワークシート関数のようにセルの中に書く。

ThisCellプロパティは、ユーザー定義関数内で使うことで自分セル位置を取得できる。使う場合は、Excel.Application.ThisCellまたはApplication.ThisCellとApplicationを付ける必要がある。型はRangeなのでRow、CollumnやOffsetも使える。

Function myAddress()
    myAddress = Excel.Application.ThisCell.Address(0, 0) '0はFalseでも同じ。0が無いと絶対表示$A$1になる
End Function

Function myCells()
    myCells = "Cells(" & Excel.Application.ThisCell.Row & "," & Excel.Application.ThisCell.Column & ")"
End Function

Rowは行、Columnは列のこと。

AceitveCellやSelectionもアドレスを表示することができるが、これらは選択しているセルの位置であり、ユーザー定義関数が入っているセルの位置ではない。もし、ActiveCellやSelectionを使うと上図の場合は、セルA1を選択しているので左のmyAddress()は、A1:D5のすべてがA1に、右もすべてCells(1,1)になる。

ユーザー定義関数を作る時に自分のセルを扱いたい場合はThisCellを使う。

(Visited 1,707 times, 1 visits today)
カテゴリー: 9 セルの中で使うユーザー定義関数の作成 <VBA> パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です