目次
最終行の値ではなく、セルの最初の値は、どうやって取得する?
こんにちは。伊川(@naonaoke)です。
ExcelのVBAでは、最終行、最終列の値の取得は必須です。
これが、理解できないと、VBAは面白くなりません。
なので、【Excel VBA 最終行】などで、検索すると、結構な勢いで、HITします。
しかし、最初って、どう書くの?
こんな疑問に最近ぶつかりました。
情けないですが、この最近の疑問をネタにブログを記載したいと思います。
このブログはこんな人にお勧め
- ExcelVBAを勉強して、初級の壁を破りたい人
- ExcelVBAで、cellsの使い方がわからない人
- 最終行、最初行を、変数を使って表したい人
このブログを、読み終わるころには・・・・
Excelでいう、最終行、最終列、最初のセルなどを、完璧に理解できます。やっていることは、簡単なのですが、VBAの初学者には、本当に難しい壁になります。私も、ずっと理解できなくて、本当に苦労した記憶があります。今回は、コードも短くして、わかりやすく解説しました。
ExcelVBAには、いろいろな範囲選択の方法がある
前回の記事でも紹介しましたが、範囲の選択はいろいろ方法があります。
CurrentRegionが一番カンタンな方法だと思います。
しかし、実務では、最初のセル、最後のセルは、日によってマチマチな訳です。
それを毎日、直面すると結構なストレスです。
そのストレスを緩和してくれるのが、VBAです。
セルの最初と最後 作業手順 その1 データベース確認
セルA4~セルA15までを選択して、コピーしたいのです。
いつもは、セルA2から始まるので、困りませんが、セルA4から始まる場合を想定します。
セルの最初と最後 作業手順 その2 列の最初と最後
セルの最初の値は、【Ctrl+↓】で、セルの最初の値のところでストップします。
それとは逆に、セルの最後の値は、【Ctrl+↓】を実行すると、空白のセルで止まります。
だから、コードを書くには、最後のセルを求めるほうが難しいのです。
以外な盲点でしたが、【Ctrl+↓】をVBAで書くとこうなります。
maxR = Cells(1, 1).End(xlDown).Row
これで最初のセルの値の場所まで、ワープできます。
maxrow = Cells(Rows.Count, “A”).End(xlUp).Row
maxR = Cells(1, 1).End(xlDown).Row
自分でやってみて、上記のコードの覚え方です。
最後のセルの値⇒End(xlUp).Row
最初のセルの値⇒End(xlDown).Row
だからxlup、つまり上に向かいます。
だから、xlDown、つまり下がります。
セルの最初と最後 作業手順 その3 横はどうなるの?
では、横の場合はどうなるのでしょうか?
maxColumns = Cells(1, Columns.Count).End(xlToLeft).Column
これが、横の最終の値です。
上の図でいうなら、セルP1、つまり、10です。
では、最初のセルE1、つまり、1はどのようにするのでしょうか?
xlToLeftが、最後なので、xlToRightになるかも?
このように、アタリをつけてコードを書いてみましょう。
そして、セルA1を起点とするので、
maxC = Cells(1, 1).End(xlToRight).Column、という憶測が立ちます。
でも、これ、実は正解なのです。
VBAの勉強においては、写経もいいですが、想像することも大切なのです。
セルの最初と最後 作業手順 その4 完成のコード
セルの最初と最後 作業手順 その5 注意点
上記のコードでもちろん作動します。
しかし、上手く作動しない時もあります。
私の失敗談ですが、セルの最終行の値を取得するときに、どうしても作動しない場合がありました。
その時のセルの最終行は、セルA100でした。
3時間くらいハマリました。
誤作動の原因は、セルA1000に1があったからです。
何事も過信はいけません。
maxrow = Cells(Rows.Count, “C”).End(xlUp).Row
VBAで最終列を取得するコード
テストで作動したが、本番で作動しない。
3時間悩んだ。1000行目に、1という文字を発見
1001行目から作動してた。
自信過剰はいけないね。— 直助@ブログとYouTubeとFXで副業30万を目指している男 (@naonaoke) November 4, 2020
ここがポイント
セルの最初から、最後までは、VBA初学者の登竜門です。どんなに難しいコードでも、必ず、VBAで表現できるはずです。基本と想像力をもって、VBAのコードを考えてみましょう。
まとめ
以外とカンタンな内容ですが、その場面に直面すると、なかなか思い浮かばないのがVBAです。
Googleで検索するよりも、ぜひ、私のサイトで検索してみてください。
きっと、ヒントがあるはずです。
今回のサンプルファイルは、No186です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。