Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 左隣のシートを相対参照

対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007

「常に隣のシートを参照するにはどうしたらいいのでしょう?」
「前のシートを相対参照するようなことはできないのでしょうか?」
といったご質問をいただくことがあります。

実務では、月ごとにワークシートを作成して前月分と今月分の合計を計算する、といったようなことがよく行われます。

この場合、既存のシートをコピーして新しい月のシートを作成するということが多いわけで、そのときに前月分のシートを参照している数式を修正する必要が出てきます。

これを楽にしたいため、隣のシートを相対参照できないのかという要望をいただくわけです。

セルの相対参照と同じイメージで、常に前月のワークシートのセルを参照することができれば、シートコピー後の修正作業を無くすことができるからです。

[スポンサードリンク]

残念ながらこの要望をそのまま実現してくれそうなワークシート関数は用意されていないようなので、VBA(Visual Basic for Applications)でユーザー定義関数を作成してみてはいかがでしょう。

▼左隣のシートのセルを参照するユーザー定義関数

Function RefLeftSheet(objCell As Range) As Variant

 Application.Volatile
 RefLeftSheet = objCell.Parent.Previous.Range(objCell.Address).Value

End Function

上記のような実質的には一行のユーザー定義関数で、常に左隣のワークシートを参照できるようになります。

引数に指定されたセル(objCell)の、ParentオブジェクトのPreviousプロパティで、前のシートがわかるので、そこから引数に指定されたセルの値(Range(objCell.Address).Value)を取得しているだけです。

▼サンプルファイル(003281.xls 54KByte)ダウンロード

サンプルファイルの「2月」「3月」シートのB1セルで、上記のRefLeftSheet関数を利用しています。

例えば、「3月」シートの右隣に「3月」シートをコピーして「4月」シートを作成したらどうなるか、などをご確認ください。

関連語句
自作関数, relative reference,

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 左隣のシートを相対参照

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.