シートが多いと他のシートの選択が面倒
Excelのブックにはシートをたくさん作ることが出来ます。作成可能なシート数の上限はメモリ量に依存するため明確な数はありませんが、以下のコードで試してみたら少なくとも私のPCでは2000までは作成できることを確認しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub SheetAddTest() Dim i As Long '// ループカウンタ i = 0 Do If i > 2000 Then Exit Do End If '// シートを追加 Call Sheets.Add(After:=Sheets(Sheets.Count)) i = i + 1 Debug.Print i Loop End Sub |
このような1000も2000もシートを持つブックはさすがに珍しいとは思いますが、それでも100近くのシートを持つブックは世の中に結構あると思います。実際私も見たことがあります。
そのようなシートが多いブックを使う場合に面倒なのがシートの選択です。シートが大量にあるようなブックの場合、「一覧」などの名前を付けたシートがあってそこから各シートの説明やハイパーリンクを貼っていることがありますが、そもそも「一覧」シートを選択するのにシートタブの左の部分を右クリックしてシートの選択ダイアログで選択する、という操作が面倒です。
一般的には「一覧」シートは一番左に置いてあることが多いと思います。そこで、一番左にぱっと移動するマクロを紹介します。
一番左のシートを選択するには
どのシートからも一番左のシートに移動するためには、一番左のシートをどうやって特定するのか、という点が重要になります。
その特定方法ですが、SheetsコレクションやWorksheetsコレクションの引数に1を設定するだけで特定が可能です。ワークシートだけしか使っていないのであればSheetsコレクションでもWorksheetsコレクションでもどちらも同じ結果になります。グラフシートやマクロシートやダイアログシートを使っている場合は違いがあり、これらのシートはSheetsコレクションにしか含まれません。
一般的にはワークシートだけを使うことの方が多いと思いますのでWorksheetsコレクションでの書き方を紹介します。
1 2 3 |
Sub SelectLeftMostSheet() Worksheets(1).Select End Sub |
1行で一番左のシートを選択可能です。
一番右のシートを選択するには
一番左のシートは「Worksheets(1)」と書けばよかったので簡単ですが、一番右のシートも大して変わりません。
1 2 3 |
Sub SelectRightMostSheet() Worksheets(Worksheets.Count).Select End Sub |
ワークシートの数は「Worksheets.Count」で取得できます。それをそのままWorksheetsコレクションのインデックスとして使えば一番右のシートを意味します。
使い方
上記マクロはすぐに使えることが条件になってきますので、クイックアクセスツールバーやリボンに登録しておくと便利です。
あとはコンテキストメニューに追加しておく方法もあります。