隣のシートを返すプロパティ


たまにはExcelらしいネタをおひとつ。しかも一発芸的なネタです。

現在アクティブなシートから見て、右隣のシートを開くときはどうしますか?おそらく多くの方は次のようにIndexプロパティの値を増減することで"次のシート"を指定することでしょう。

Sub Sample1()
    Worksheets(ActiveSheet.Index + 1).Activate
End Sub

もちろんこれでも間違いはありません。しかし、Worksheetオブジェクトには次のシートを返すNextプロパティと、前のシートを返すPreviousプロパティもあります。こちらを使うと、上のコードは次のようになります。

Sub Sample1()
    ActiveSheet.Next.Activate
End Sub

アクティブシートが一番右端のシートだったとき、ActiveSheet.NextはNothingを返します。これを利用すると、アクティブシートが一番右端のシートかどうかを次のように判定できます。参考までに、Indexプロパティを使った方法もご紹介します。

Sub Sample2()
    If ActiveSheet.Next Is Nothing Then
        MsgBox "右端です"
    Else
        MsgBox "右端ではありません"
    End If
End Sub
''Indexプロパティを使ったやり方
Sub Sample3()
    If ActiveSheet.Index = Worksheets.Count Then
        MsgBox "右端です"
    Else
        MsgBox "右端ではありません"
    End If
End Sub

NextプロパティやPreviousプロパティを使った操作は、ほとんどの場合Indexプロパティと同じように使えます。ただし、ブック内にグラフシートなどが存在している場合は微妙に異なりますのでご注意ください。