つらつら Excel VBA

私の備忘録です。

範囲を広げる(Offset、Resize)

上下左右1セルずつ選択範囲を広げたい。
1セル選択→9セル選択、4セル選択→16(18)セル選択みたいな感じのことをしたい。

起点が1列目1行目の場合にOffsetでエラーが起きる。
これを無視すると簡単。

Sub 選択範囲を広げる1()
    
    On Error Resume Next
    
    Dim targetRange As Range
    
    With Selection
        Set targetRange = .Offset(-1, -1).Resize(.Rows.Count + 2, .Columns.Count + 2)
    End With
    
    targetRange.Select
    
End Sub


上記Offset時のエラー回避版。

Sub 選択範囲を広げる2()
    
    Dim targetRange As Range
    Set targetRange = Selection '.Areas(1)
    
    Dim iRowAdd As Integer: iRowAdd = 1
    Dim iColumnAdd As Integer: iColumnAdd = 1
    
    If targetRange(1).Row > 1 Then
        Set targetRange = targetRange.Offset(-1, 0)
        iRowAdd = 2
    End If
    If targetRange(1).Column > 1 Then
        Set targetRange = targetRange.Offset(0, -1)
        iColumnAdd = 2
    End If
    
    With targetRange
        Set targetRange = .Resize(.Rows.Count + iRowAdd, .Columns.Count + iColumnAdd)
    End With
    
    targetRange.Select
    
End Sub

以上。