HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 選択範囲外のセル領域を取得する

選択範囲外のセル領域を取得する|Excel VBA

セル操作関連のテクニック

選択範囲外のセル領域を取得する

(Excel 97/2000/2002/2003/2007/2010)

サンプルでは、選択範囲の上下左右のセル領域をRange型のObject変数に格納し、Unionメソッドで順に組み合わせていくことにより、選択範囲外のセル領域を取得しています。

(前提)
  1. 選択範囲は単一であり、複数のセル領域に分かれていないこと。
  2. 選択範囲の上下左右にセル領域が行単位、列単位で存在すること。

    ※ 選択範囲のアドレスが例えばRange("A1:D5")のような場合には
    上側、左側にセルが存在しないためエラーになります。

Sub GetOutsideOfSelection()

    Dim Rng As Range
    
    With Selection
        '選択範囲より上側を取得
        Set Rng = Rows("1:" & .Resize(1).Offset(-1, 0).Row)
        
        '選択範囲より下側を取得して結合
        Set Rng = Union(Rng, _
            Rows(.Resize(1).Offset(.Rows.Count, 0).Row & ":" & Rows.Count) _
            )
        '選択範囲の左側を取得して結合
        Set Rng = Union(Rng, _
            Range( _
            Columns(.Resize(.Rows.Count, 1).Offset(0, -1).Column), Columns(1)) _
            )
        '選択範囲の右側を取得して結合
        Set Rng = Union(Rng, _
            Range( _
            Columns(.Resize(.Rows.Count, 1).Offset(0, .Columns.Count).Column), _
            Columns(Columns.Count)) _
            )
    End With
    
    '結合したセル範囲を選択
    Rng.Select
End Sub