たまには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プロパティと同じように使えます。ただし、ブック内にグラフシートなどが存在している場合は微妙に異なりますのでご注意ください。