VBAスタンダード学習12[Offset]
今回は、対象のセルの操作ではなく、対象のセルを基点として、相対的にセルの移動を行う関数を見てみる。--------------------------------------①Offset--------------------------------------下記画像の通り、C32セルを起点として、Offset関数がどのように働くかを見てみる。ソースSub getOffset() Range("C32").Offset(-1, -1).Value = "(-1, -1)" ' 左上 Range("C32").Offset(-1, 0).Value = "(-1, 0)" ' 上 Range("C32").Offset(-1, 1).Value = "(-1, 1)" ' 右上 Range("C32").Offset(0, -1).Value = "(0, -1)" ' 左 Range("C32").Offset(0, 0).Value = "基点" ' 基点(0, 0) Range("C32").Offset(0, 1).Value = "(0, 1)" ' 右 Range("C32").Offset(1, -1).Value = "(1, -1)" ' 左下 Range("C32").Offset(1, 0).Value = "(1, 0)" ' 下 Range("C32").Offset(1, 1).Value = "(1, 1)" ' 右下End Sub結果Offsetの引数は、、、第1引数:行数第2引数:列数基点からそれぞれどの程度移動するかを行、列で指定することで指定範囲のRangeオブジェクトが返却される。尚、以下のようにエクセルの位置を超えた指定を行うとエラーになる。javaのようにIndexOutOfBounds的なエラーではないので、ソースの複雑さによってはエラー特定が難しくなる、、Range("C32").Offset(1, -99999).Value = "(1, -99999)" ' 左下また、ソース例だとRangeしかOffset指定していないがCells(32, 3).Offset(1, 1).Value = "(1, 1)" ' 右下のように、Cells指定も可能。Offsetは実務でも使うシーンが多いので試験対策の為だけでなく、理解しておくと良いかと思う。