こんにちは、Ryoです。
ワークシート操作でWorksheet名を取得したいケースは多々ありますが、その中でPreviousプロパティ/Nextプロパティを利用すると指定したワークシートの左側(前)、右側(後)のシート名を取得することができますので、今回はその内容について書いていきます。
1.サンプル概要
アクティブシートは「Sheet1」で左側に「Sheet2」、右側に「Sheet3」があります。
Previousプロパティ、Nextプロパティを利用してそれぞれ取得しメッセージボックスで表示した結果は以下の通りになります。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() 'ActiveSheet(=Sheet1)の左側と右側のシート名を取得して 'メッセージボックスで表示する With ActiveSheet MsgBox .Name & "の左側:" & .Previous.Name _ & vbLf & .Name & "の右側:" & .Next.Name End With End Sub
構文:オブジェクト.Previous/Next
Previousプロパティは指定したワークシートの「左側ワークシート」、Nextプロパティは「右側ワークシート」を取得します。
ちなみに左端のワークシートに対してPreviousプロパティを使用したり、右端のワークシートに対してNextプロパティを使用した場合は「Nothing」が戻り値となり、名前を取得しようとすればエラーになりますのでご参考までに。
◆参考:ワークシートコピー後のシート名取得
ワークシートをコピーする際に利用するCopyメソッドは「コピー後のワークシート」自体を返しませんので、Nextプロパティを利用しオブジェクト変数に格納して取得するという方法もあります。
Sub Sample2() Dim sh As Worksheet 'アクティブシートをSheet3の右側にコピー ActiveSheet.Copy After:=Worksheets("Sheet3") 'オブジェクト変数shにSheet3も右側のシート名 '(=コピー後シート名)を格納 Set sh = Worksheets("Sheet3").Next 'メッセージボックスで表示 MsgBox "コピーしたSheet名: " & sh.Name End Sub
実行結果は以下の通りです。
3.まとめ
ワークシート操作のなかで特異なケースのように思えますが、知っておくと何かと使い勝手が良いプロパティです。
コピー後のワークシートについてもNextプロパティを利用することで取得することができて便利ですので、機会があれば使ってみるのも良いかと思います。
以上、指定したワークシート前後のシートを参照・取得する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo