2017年3月13日月曜日

【Excel】 Range のサブレンジを返す

以下の関数はRange の部分範囲を返す。範囲は基準となる Range に対して「開始行、開始列、終了行、終了列」を 0 から始まるオフセット値で指定する。

Function SubRangeOf(wRng As Range, wBgnRow As Long, wBgnCol As Long, Optional wEndRow As Long = 0, Optional wEndCol As Long = 0) As Range
' wRng.Cells(wBgnRow, wBgnCol)~wRng.Cells(wEndRow, wEndCol) の範囲を返す。
' wEndRow、wEndCol を省略すると wRng の右下までを返す。

  Set SubRangeOf = Nothing
  If ((wEndRow <= 0) Or (wEndRow > wRng.Rows.Count)) Then wEndRow = wRng.Rows.Count
  If ((wEndCol <= 0) Or (wEndCol > wRng.Columns.Count)) Then wEndCol = wRng.Columns.Count

  If ((wBgnRow <= wEndRow) And (wBgnCol <= wEndCol)) Then
    Set SubRangeOf = wRng.Offset(wBgnRow - 1, wBgnCol - 1).Resize(wEndRow - wBgnRow + 1, wEndCol - wBgnCol + 1)
  End If
End Function


使い方 :
set RepoWindow = Range("C16:P25")
'RepoWindow の2行目の5列目から右下までをクリア
SubRangeOf(RepoWindow , 2, 5).ClearContents

0 件のコメント: