指定シートの前後(左右)のシートを参照するには

指定したシートの前(左)や後(右)のシートを参照する場合には、PreviousプロパティとNextプロパティを利用します。

Previousプロパティが左のシート、Nextプロパティが右のシートを指します。左右にシートがない場合はNothingを返します。

Nothingのシートを選択しようとするとエラーになるため、左右のシートを選択する際にはNothingかどうかの判定は必須になります。

いずれのプロパティもシートの種類に応じたオブジェクトを返します。


構文

Property シートオブジェクト.Previous As Object
Property シートオブジェクト.Next As Object

Worksheet Previous、Nextともに親オブジェクトにシートを指定します。定義上はWorksheetとなっていますがワークシートだけでなくグラフシート、マクロシート、ダイアログシートを指定することも可能です。
戻り値 戻り値は指定したシートの左右のシートのオブジェクトが返却されます。

ワークシートかマクロシートの場合はWorksheetオブジェクト、グラフシートの場合はGraphオブジェクト、ダイアログシートの場合はDialogSheetオブジェクト、と参照したシートによって異なります。

指定したシートが一番左の場合のPreviousプロパティや一番右のシートのNextプロパティの場合はNothingが返却されます。



サンプルコード

左のシートを選択するサンプルコードです。左にシートがある場合のみ選択します。

上のコードをPreviousをNextにしただけです。右のシートを選択するサンプルコードです。右にシートがある場合のみ選択します。

上記の2つのサンプルとも、左右の参照先のシートが非表示になっている場合は選択しないようにしています。

上のコードでは非表示のシートは選択しないようにしていますが、そのような回避措置を行わず非表示のシートを表示しようとすると実行時エラーになります。

非表示のシートを選択したい場合は、事前にVisibleプロパティをxlSheetVisible(表示する)に変更しておく必要があります。


さらに応用すると・・

NextプロパティとPreviousプロパティは一方方向に対して参照しますが、一番右や一番左のシートに到達した場合はそこで止まってしまいます。

しかし、実際にExcelを使う場合で、特にシート数が多いブックの場合はシートの選択が結構面倒になります。

そこで、一番左に到達した場合でさらに左に移動した場合は一番右へ、逆に一番右から一番左へと、シートをくるくる回るようにした方が使い勝手が上がります。

以下のページにその方法を書いていますのでご参照ください。

右端シートから左端、左端シートから右端へ移動する