Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を右から取得するExcelマクロ

シート名を右から取得するExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

シート名を取得して、一覧を作成するExcelマクロをご紹介しています。

これに関連して、
「excel vba シート名 取得 右から」
という検索でも、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

複数のシートが存在するブックで、右のシートから順番にシート名を取得するには、どのようなコードを書けばいいのかを探していた方による検索キーワードです。

[スポンサードリンク]

シート名を右から取得するサンプルマクロ

以下のマクロを実行すると、アクティブなブックのシート名が、右から順番に取得され、イミディエイトウィンドウに出力されます。
Sub アクティブブックの全シート名を右から順番に取得する()
 Dim i As Long
 
 For i = Sheets.Count To 1 Step -1
  Debug.Print Sheets(i).Name
 Next i
End Sub

ポイントはFor~Nextループをどう回すかです。

最後(いちばん右)のシートから、先頭(いちばん左)のシートに対して、ループ処理が行われるように、
  For i = Sheets.Count To 1 Step -1
とするのがこのマクロのポイントです。

ちなみに、ループを回す方向を指定できないFor Each~Next文では、同じような処理を書くのは無理です。

シート名を右から取得してシート名一覧を作成するサンプルマクロ

(この需要があるのかちょっと疑問は残りますが)シート名を右から取得して、シート名一覧シートを、アクティブなブックのいちばん右に作成するなら、以下のようなマクロです。

Sub アクティブブックの全シート名を右から取得してシート名一覧を作成する()
 Dim n As Long ' シート名を書き出す行番号
 Dim i As Long

 With Sheets
  .Add After:=.Item(.Count)
  ActiveSheet.Name = "シート名一覧"
  n = 1
  For i = (.Count - 1) To 1 Step -1
   Cells(n, "A").Value = .Item(i).Name
   n = n + 1
  Next i
 End With
End Sub

左から順番にシート名を取得して、いちばん左にシート名一覧シートを作成するマクロと比較すると、どうしてもコードが複雑になります。

With文が苦手だという方は、先のイミディエイトウィンドウに出力するだけのマクロを、以下のようなWith文を使った形で、まずは理解しましょう。

Sub アクティブブックの全シート名を右から順番に取得する_With()
 Dim i As Long

 With Sheets
  For i = .Count To 1 Step -1
   Debug.Print .Item(i).Name
  Next i
 End With
End Sub

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を右から取得するExcelマクロ

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.