指定シートの前後(左右)のシートを参照するには
指定したシートの前(左)や後(右)のシートを参照する場合には、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が返却されます。 |
サンプルコード
左のシートを選択するサンプルコードです。左にシートがある場合のみ選択します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub PreviousTest() Dim sht '// 左のシートのオブジェクトを取得 Set sht = ActiveSheet.Previous '// 左のシートが存在する場合、かつ、非表示でない場合 If (Not sht Is Nothing) And (sht.Visible <> xlSheetHidden) And (sht.Visible <> xlSheetVeryHidden) Then '// 左のシートを選択する sht.Select End If End Sub |
上のコードをPreviousをNextにしただけです。右のシートを選択するサンプルコードです。右にシートがある場合のみ選択します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub NextTest() Dim sht '// 右のシートのオブジェクトを取得 Set sht = ActiveSheet.Next '// 右のシートが存在する場合、かつ、非表示でない場合 If (Not sht Is Nothing) And (sht.Visible <> xlSheetHidden) And (sht.Visible <> xlSheetVeryHidden) Then '// 右のシートを選択する sht.Select End If End Sub |
上記の2つのサンプルとも、左右の参照先のシートが非表示になっている場合は選択しないようにしています。
非表示のシートを表示しようとすると実行時エラーになります。
非表示のシートを表示したい場合は事前にVisibleプロパティを変更しておく必要があります。