目次
作成した表を選択する
こんにちは。伊川(@naonaoke)です。
上の記事で、FINDメゾットを紹介しました。
紹介のときに、CurrentRegionという記載がありましたので、今回は、CurrentRegionを紹介します。
表の選択が超カンタンになります。
問題提起
(株)IKAWAの柄久 瀬瑠子(エク セルコ)は上司から下記のような依頼を受けました。
業務で利用する表をカンタンにコピー、
貼り付けができるVBAを作成してほしい。
カンタンにVBAを作成することができるのだろうか?
解決策

・CurrentRegionで表を全部選択する。・OFFSET Resize rows.countで微調整を行う。
CurrentRegionプロパティ
プロパティでは空白のセルで囲まれた範囲を読み取り、参照するプロパティです。
表で管理していたデータに追加分が発生した際に、そのまま追加分を指定することができます。
ここが超カンタンで便利なのです。
しかし、少しだけ、不便なところもあります。
CurrentRegion 作成手順その1 データベースを確認
上の図のような表があります。
表全体を選択するならカンタンです。
1 2 3 |
Sub sample2() Range("A1").CurrentRegion.Select End Sub |
上のコードだけで選択されます。
表の項目が追加されようが、減少しても、なにもコードを修正することはありません。
ただ、表全体が選択されることがデメリットでもあるのです。
表全体ということは、日時、名前、部署も選択されます。
CurrentRegion 作成手順その2 OFFSETを利用する
1 2 3 |
Sub sample3() Range("A1").CurrentRegion.Offset(1, 0).Select End Sub |
OFFSETを追加したコードを実行します。
OFFSETが理解できていない人は上の記事を読んでください。
日時、名前、部署は選択されなくなりました。
しかし、空白の行(セルA12~セルC12)も選択されました。
肝心なことは、ここで失敗と思わないことです。
一歩進みましたが、一歩後退しただけです。
後は、帳尻を合わせればいいのです。
CurrentRegion 作成手順その3 Resize rows.countで帳尻を合わせる
1 2 3 |
Sub sample3() Range("A1").CurrentRegion.Offset(1, 0).Select End Sub |
上のコードを実行すると、必ず、余計な1列も選択されます。
その余計な列を選択しなければいいのです。
最後の列から、1列を除算すればいいという発想ができれば、後はカンタンです。
1 2 3 4 |
Sub sample() Range("A1").CurrentRegion.Offset(1, 0).Resize(Range("A1").CurrentRegion.Rows.Count - 1).Copy Worksheets(2).Range("A2").PasteSpecial Paste:=xlPasteAll End Sub |
Resizeプロパティもセルの範囲を変更するために、OFFSETと同様に、必要なスキルとなります。
OFFSETと合わせて、ぜひ、Resizeのスキルも取得してください。
コピーされました。
上の図のコードは、コピーした内容をSheet2のセルA2から、貼り付けるというコードになっています。
コピーと、貼り付けは、動画では紹介していません。
実務では、単に選択のみというVBAはないでしょう。
コピー、貼り付けのコードも参考にしてみてください。
ここがポイント

入実務でVBAを利用する場合は、表の選択は、結構あるのではないでしょうか。先頭から、1列下がる、1列を除算する。このようなコードを閃くようにするために、カンタンなコードを記載して練習しましょう。そうすると、VBAに対する考え方が理解できるようになります。
まとめ

CurrentRegion、OFFSET、Resizeを利用して、必要な表の部分を選択できるようなった、柄久 瀬瑠子(エク セルコ)なのでした。
今回のサンプルファイルは、No62です。

わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。