ULALA'Sブログ

ULALA'Sブログ

2020年08月31日
XML
カテゴリ: VBA
​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​今回は、対象のセルの操作ではなく、
対象のセルを基点として、 相対的に
セルの移動を行う関数 を見てみる。

①Offset

下記画像の通り、C32セルを起点として、
Offset関数がどのように働くかを見てみる。 ​




​ソース​​​

Sub ​getOffset​ ()
Range ("C32"). ​Offset​ ( -1, -1 ). Value = "(-1, -1)"  ' 左上
Range ​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
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は実務でも使うシーンが多いので
試験対策の為だけでなく、理解しておくと良いかと思う。






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2020年08月31日 23時30分18秒
コメント(0) | コメントを書く


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

プロフィール

ULALA13

ULALA13

カレンダー


© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: