「excel2010 選択したエリアの最終セル 取得 vba」
という検索キーワードに気づきました。
選択したセル範囲の、最後のセルを取得するには、どのようなコードを書けばいいのかを探していらした方による検索です。
選択セルを表すRangeオブジェクトを取得するSelectionプロパティを組み合わせた式にします。
選択範囲の最終セルを取得する式
具体的には以下のオブジェクト式で、選択範囲の最終セルを取得できます。上記ステートメントを実行すれば、選択されているセル範囲の最終セルのアドレスがメッセージボックスに表示されます。
Itemプロパティを省略しない選択範囲の最終セルを取得する式
先ほどの、
Selection(Selection.Count)
というオブジェクト式は、RangeオブジェクトのItemプロパティが省略されています。
Range.Itemプロパティの引数に、選択されているセルの数を取得する式Selection.Countを指定しているわけです。
選択範囲の最終セルを取得する式を確認する
Selection.(Selection.Count)
や
Selection.Item(Selection.Count)
といった式を機械的に覚えるのではなく、意味を理解しましょう。
選択範囲のセルの数を変数にすると、先ほどの
MsgBox Selection.Item(Selection.Count).Address
以下のように書き直せます。
Dim cnt As Long cnt = Selection.Count
MsgBox Selection.Item(cnt).Address
End Sub
上記Subプロシージャの、
cnt = Selection.Count
で、変数cntに選択セルの数を代入していることをイメージしておきましょう。
選択範囲のセルの数を取得する部分だけでなく、選択範囲のセルを表すRangeオブジェクトも変数にすると、以下のように書けます。
Dim rng As Range
Dim cnt As Long Set rng = Selection
cnt = rng.Count
MsgBox rng.Item(cnt).Address
End Sub
先ほどの、
cnt = Selection.Count
より難易度は上がりますが、
Set rng = Selection
で、オブジェクト変数rngに、選択されているセルを表すRangeオブジェクトがセットされることをイメージしておきましょう。
更に最終セルを表すRangeオブジェクトも変数にすると、以下のように書けます。
Dim rng As Range
Dim rng_z As Range
Dim cnt As Long Set rng = Selection
cnt = rng.Count
Set rng_z = rng.Item(cnt)
MsgBox rng_z.Address
End Sub
実際に利用するマクロの中で、どこまで分解するかはさておき、オブジェクト式「Selection(Selection.Count)」「Selection.Item(Selection.Count)」の意味を理解するために、変数を使った分解を行ってみることおすすめします。
Home » Excel VBA Rangeオブジェクト » Excel VBAで選択範囲の最終セルを取得する-Selection.Item(Selection.Count)