見出し画像

つかえるExcelマクロ[マクロルーティン#19](数式をコピーでいれる)最終行の取得

この記事はマクロルーティン#19(数式をコピーでいれる)で書いたマクロを、ワンランクUPさせたマクロをご紹介しています。

◆マクロの動作イメージ

画像1

左の図でE列に合計金額の数式(C+D)を全行に入力するというマクロで、マクロ実行結果が右の図です。

◆実行したマクロ

画像2

たった2行のコードです。
★このマクロは数式が入る最終行が固定された書き方になっています。
Range("E2:E10") の部分です。
2行目から・・は良しとして、最終行が10行目と固定されていては、データの行数が増えたり減ったりした際に10の部分を書き変えなければいけません。

◆このマクロをワンランクUPさせる!

データの行数に合わせて数式が入るマクロにしましょう!


◆ワンランクUPマクロ

画像3

★黄色の2行のコードが今回追加したコードです。
Range("E2:E10") の部分は
Range("E2:E" & lastGyo) となっています。


◆解説

<テキスト>
②Dim lastGyo As Long
①lastGyo = Range("A1").End(xlDown).Row

Range("E2").Formula = "=C2+D2"
③Range("E2:E" & lastGyo).FillDown

--------------------------------------------------------------------------------------まず初めに、最終行を取得するコードを書きます。それが①のコードです。
lastGyo = Range("A1").End(xlDown).Row
右辺では、A1から下方向(xlDown)に探した最下端(End)の行番号(Row)を取得しています。
(つまり、マニュアル操作の場合でいうところの、「Ctrl」+「↓」です。)

◆おさらい<マクロルーティン#22(ショートカットキーの動作をマクロでする)

画像6



①の右辺で取得した行番号をlastGyoという変数に入れておきます。(この後の作業で、この行番号を使うからです。)


そして、いつものようにlastGyoという変数を勝手に作ったのでマクロ側にお知らせしておきます。

②Dim lastGyo As Long (lastGyoは変数で整数です。→整数は”Long”)
(この書き方は今後何度も出てくるので、このまま覚えておいて大丈夫です。)


◆そして最終行番号を置き換える!

Range("E2:E10").FillDown 
10の部分を先ほど取得したlastGyoに置き換えます。
Range("E2:E lastGyo").FillDown
このように書きたいところですが・・・lastGyoは文字列ではなく変数なので、ダブルクォーテーションで囲いません。
ですので次のコードの書き方になるわけです。
③Range("E2:E" & lastGyo).FillDown
カッコ内のE2:Eまでは文字列なのでダブルクォーテーションで囲って、変数のlastGyoを&でつなげてあげます。

はい。できました。

ここからのーーーーーーーーーーーー
Range("E2").Formula = "=C2+D2"
Range("E2:E10").FillDown

↓↓↓コレーーーーーーーーーーーーーー

<ワンランクUPマクロ>------------------------------
Dim lastGyo As Long

lastGyo = Range("A1").End(xlDown).Row

Range("E2").Formula = "=C2+D2"
Range("E2:E" & lastGyo).FillDown
-----------------------------------------------------------


画像4

★今回のコードは下に向かって最終行を取得する書き方をご紹介しました。
以下の内容はシートの下から上に向かって最終行を取得方法です。
余裕のある方はご覧ください。


◆関連記事<マクロルーティン#22(ショートカットキーの動作をマクロでする)
◆関連記事<マクロルーティン#21(最終行は変化する)
◆関連動画<【マクロルーティン13】変動する最終行を取得する


この記事が気に入ったらサポートをしてみませんか?