【初心者】誰でも分かるExcelマクロ【VBA】~最終行・列の実際の使用方法~
Part5では、セルの最終行・列の書き方や取得方法について触れてきましたが、
本パートでは主にセルの最終行・列の取得してどのように使用するかについて解説致します。
最終行・列の実際の使用方法
セルの最終行を取得して、最終行の上に行を挿入してみます。
下記のような表があったとして、”B”列の最終行を取得して”行”を挿入します。
”B”列の最終行を取得するため、Cells(行,列)の列は”2”になります。
また、”B”列の最終行がある「行全体」を取得したいため、最後に.Row(行)を入れます。
最後に”a”に格納した行全体に対して「行の挿入」【.insertメソッド】を行います。
上記のマクロを使うと以下のように最終行(10行目)に行が挿入されます。
因みに、もう一度同じマクロを作動させると”B”列の最終行(11行目)を取得して、行を挿入します。
マクロをボタンに設定する方法
マクロを使用する際に常に「開発」タブのマクロから選択していると面倒なので、ボタンを作成します。
下記のように、「開発」タブの「挿入」からフォームを選択します。
今回はボタンの作成を行うため、一番左上に表示されている「四角」を選択します。
「四角」を選択すると、Excelの図形描写のように十字カーソルとなり、ドラッグでボタンの大きさを任意に設定できます。
また、ボタンを作成すると自動で下記の表示が表れ、登録したいマクロを選択して、「OK」を押します。
できたボタンは、初期設定では「ボタン1」となっていますので、右クリックでテキストの編集をすれば、好きな名前に変えることができます。
あとは、この作成したボタンを押せば、登録したマクロが起動します。
※マクロは、動作しますと「戻る」ボタンで戻すことはできなくなりますので、必ず起動前に「上書き保存」(Ctrl + S)してから動作させてください。
セルの最終行・列の取得 ~補足~
セルの最終行・列の取得に関して、Part5ではCellsを使用した下記のようなコードについて紹介しました。
① 最終行:Cells(Rows.Count ,1).End(xlUp)
② 最終列:Cells(1 ,Columns.Count).End(xlToLeft)
Rangeオブジェクトにおいても同様に最終行を取得することは可能です。
Rangeオブジェクトで取得する場合は下記のようなコードとなります。
① 最終行:Range(”A” & Rows.Count).End(xlUp)
上記で、A列の最終行数の取得が可能となります。
どちらを使用しても結果は同じですので、お好きな方を使用いただければと思います。
マクロの動作確認方法
マクロがきちんと動作しているのかを試す場合に便利なコードを紹介します。
「Msgbox」(メッセージボックス)を使用します。
上記でご紹介したRangeオブジェクトを利用した最終行の取得が正常に行われているかを確認してみます。
コード:MsgBox Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A” & Rows.Count).End(xlUp)
上記のようにMsgBoxの後ろに入れたコードが成功していれば、Microsoftのメッセージウィンドウが表示され、答えを出してくれます。
※後ろのコードが間違っている場合、メッセージウィンドウは出ますが、表示が何も出ません(空白で表示)。
また、今後は長いコードを使用することも多くなるため、変数を利用したMsgBoxの使い方も覚えておきましょう。
下記のようなコードで利用可能です。
長いコードを書く場合は、変数を利用して、動作の確認をしたいコードを「a」に格納すれば確認可能です。
格納する「a=」の位置を順々に動かしていけば、どこのコードまでがきちんと動作しているのかを調べることができる。
今回は、最終行・列のコードの実際の使用方法や補足等について解説しましたが、次回からは日常的に使えそうなコードを紹介しながら、出てきた構文を解説していく予定です。
次回→
前回のページはこちら⇩
前回→【初心者】誰でも分かるExcelマクロ【VBA】~最終行・列の取得~