シート名を取得して、一覧を作成するExcelマクロをご紹介しています。
これに関連して、
「excel vba シート名 取得 右から」
という検索でも、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
複数のシートが存在するブックで、右のシートから順番にシート名を取得するには、どのようなコードを書けばいいのかを探していた方による検索キーワードです。
シート名を右から取得するサンプルマクロ
以下のマクロを実行すると、アクティブなブックのシート名が、右から順番に取得され、イミディエイトウィンドウに出力されます。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文では、同じような処理を書くのは無理です。
シート名を右から取得してシート名一覧を作成するサンプルマクロ
(この需要があるのかちょっと疑問は残りますが)シート名を右から取得して、シート名一覧シートを、アクティブなブックのいちばん右に作成するなら、以下のようなマクロです。
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文を使った形で、まずは理解しましょう。
Dim i As Long With Sheets
For i = .Count To 1 Step -1
Debug.Print .Item(i).Name
Next i
End With
End Sub
- Newer:セル内データを右揃えにするGASスクリプト
- Older:VBAのParentとは
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を右から取得するExcelマクロ