見出し画像

マクロルーティン#21(最終行は変化する)

最終行番号を取得するコード

前回(マクロルーティン#20)のマクロは完成できましたでしょうか?
★次の図のようにE列で一万以上の値のフォントを赤にするマクロ作成です。

画像2

◆ヒント
一行目コード:「i」は2から10まで変わる
二行目コード:もし(”E” & i )の値が一万以上なら
三行目コード:(”E” & i )のフォントは赤
四行目コード:もし終わり
五行目コード:次!

◆解答例
For i = 2 To 10
If Range("E" & i).Value >= 10000 Then
Range("E" & i).Font.Color = vbRed
End If
Next

画像2

これができたらもう完璧!
これからできることが格段に広がります!

本題
ここまでご紹介したらもう、あれをお伝えするしかありません。
今まではサンプルデータで最終行が固定されていたので、
For i = 2 To 10
というふうに「10」という数字をかけましたが、データの行数がいつも同じとは限らない。
そんなときの最終行番号を取得するコードです。


A列のデータ最終行番号を取得するコード

Range("A" & Rows.Count).End(xlUp).Row

★シートの最終行からファンクションキー「Ctrl」+「」を実行して止まったセルの行番号を取得するコードです。

◆解説
Rows.Count
→「Rows」は行のことですね。(マクロルーティン#6
「行のカウント」ですからエクセルシートの最終行をさしています。
(つまり「.xlsx」だと1048576行目です)

End(xlUp)
→(上にあがった)最後

画像3


◆使い方
このページの最初に解答例がありますので、それを使って最終行がわからない場合の書き方が次のマクロです。

画像4

最初の一行だけ増えています。
saigo = Range("A" & Rows.Count).End(xlUp).Row

◆解説
右側のコードで最終行番号を取得しています。
Range("A" & Rows.Count).End(xlUp).Row
これを saigo という変数を用意してここに最終行番号をいれておきます。

次の行のForから始まるコードで10としていたところを saigo としています。
「For i = 2 To 10」
   
「For i = 2 To saigo

これで、最終行が何行目になっても、最初に書いたコードで最終行を取得してからその後のコードを実行してくれるので汎用性が広がりました!

それでは問題です。

画像5

E列の最終行を取得するコードはどう書くでしょう。

動画

それでは、次回マクロルーティン#22で。

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