サンプルでは、選択範囲の上下左右のセル領域をRange型のObject変数に
格納し、Unionメソッドで順に組み合わせていくことにより、選択範囲外の
セル領域を取得しています。
(前提)
1.選択範囲は単一であり、複数のセル領域に分かれていないこと。
2.選択範囲の上下左右にセル領域が行単位、列単位で存在すること。
※選択範囲のアドレスが例えばRange("A1:D5")のような場合には
上側、左側にセルが存在しないためエラーになります。
Sub GetOutsideOfSelection()
Dim Rng As Range
With Selection
'選択範囲より上側を取得
Set Rng = Rows("1:" & .Resize(1).Offset(-1).Row)
'選択範囲より下側を取得して結合
Set Rng = Union(Rng, _
Rows(.Resize(1).Offset(.Rows.Count).Row & ":" & Rows.Count) _
)
'選択範囲の右側を取得して結合
Set Rng = Union(Rng, _
Range( _
Columns(.Resize(.Rows.Count, 1).Offset(0, .Columns.Count).Column), _
Columns(Columns.Count)) _
)
'選択範囲の左側を取得して結合
Set Rng = Union(Rng, _
Range( _
Columns(.Resize(.Rows.Count, 1).Offset(0, -1).Column), Columns(1)) _
)
End With
Rng.Select
End Sub
|