ブック内に含まれる全てのシート名を取得する – VBA

開いているブックに含まれているシート名を取得する方法を2つ紹介します。
1つ目はSheetsで左側からのシート番号を指定してシート名を取得する方法。
2つ目はブックに含まれるworksheetオブジェクトを一つずつ取得して、その名前を取得する方法。
どちらも同じ様に名前を取得できますが、2つ目の方法でループ内でシートオブジェクトに対し操作を行う場合に
何かと便利になるので、個人的にはおすすめです。

'1つめの方法
For i = 1 To ThisWorkbook.Sheets.Count
    Debug.Print Sheets(i).Name
Next i

'2つめの方法
Dim sht As Worksheet

For Each sht In Worksheets
    Debug.Print "name = " & sht.Name
Next sht
Continue Reading

Excel VBA セル範囲の最終行と最終列位置を取得する – VBA

セル範囲内で最終行まで処理を行ったり、最終列の位置を調べることはよくあります。
その時に使える方法です。
最初は、xlDownとxlToRightを使えば良いと思ったのですが、途中で空白セルがあると、その手前の位置が返されてしまうので、セル範囲の最終位置ではないので、最終行や最終列から上、左という流れで取得します。

また、下記では調べる位置を10としていますが、通常は表の見出しや連番等の全て値が入っている行や列の位置を指定します。
また、変数に使う型は、Longが良いでしょう。
データが入っている行はintegerの範囲を超えることがよくあり、integerのままだとエラーになります。

Dim last_row as Long    '最終行
Dim last_column as Long '最終列1

last_row    = Cells(Rows.Count, 10).End(xlUp).Row
last_column = Cells(10, Columns.Count).End(xlToLeft).Column

msgbox "最終行 = " & last_row
msgbox "最終列 = " & last_column
Continue Reading