Excelの自動化に憧れてVBAを勉強しています!でもプログラミングは難しい…
プログラミングといっても、よく使うものから覚えていけば大丈夫です!
Excelを使うビジネスマンならVBAを使いこなせるようになりたいと
一度は考えたことがあるでしょう。
今回、私がVBAを実務で使っていて
「これは使える!」
と思ったものを紹介していきます。
量が多いので少しずつ追加していきますね
最終行を取得する方法
VBAを使って、自動化ファイルを作るときに、とてもよく使うのが
「最終行の取得です」
私は医療に関わっていた経験があるのですが、病院でカルテのデータをつなぎ合わせるときに、
「最終行の取得」はよく使われます。
2パターンに分けて解説します。
パターン1
Dim LastRow As Long '最終行の名前の定義 LastRow = Worksheets("集計シート").Cells(1, 1).End(xlDown).Row
一つ目のパターンです。
「集計シート」という名のシートのセルの1行目1列目(つまり一番左上)から、
「ctrl」+「↓」を押したときのセルの行数を出力します。
「ctrl」+「↓」を押すと、その列の一番下の行に飛ぶと思いますが、
その時の行が表示されます。
この状態で、「ctrl」+「↓」を押すと…
一番下の20行目に移動できます。
上に書いたコードは、この時の行数を示しているということです。
この方法で大体は表示できると思いますが、
これでは最終行を表示できないパターンがあります。
それは、「途中で空白があったとき」です。
全20行だったとしても、10行目に空白があれば、
この場合のLastRowは「9」になってしまいます。
この状態で「ctrl」+「↓」を押しても…
9行目に移動してしまい、一番下までカーソルが動いてくれません。
この場合は、最終行が9行目となってしまい、正しく表示されません。
途中で空白のある可能性のデータの場合はこちらをご使用ください。
パターン2
Dim LastRow As Long '最終行の名前の定義 LastRow = Worksheets("集計シート").Cells(Rows.Count, 1).End(xlUp)
この方法は、Excelで出しうる一番下の行数(1048576行目)から、「ctrl」+ 「↑」を押したときの行数という意味です。
この方法であれば、途中で空白があっても、一番下の行を見つけることができます。
1048576行目から、「ctrl」+「↑」を押すと…
20行目を取得することができます。
このように、途中で空白がある場合でも対応できるので、
私は最終行を取得するときは、いつもこの「パターン2」の方法で書いています。
表のタイプによって、「どちらなら最終行を取得できそうか」考えてコーディングしていきましょう
まとめ
少しずつ便利なコードを書いていって、たまったらまとめようと思ってます。
お疲れ様です。