PR

【VBA】配列に格納したデータを別シートに貼り付け

【VBA】配列に格納したデータを別シートに貼り付け VBA
この記事は約3分で読めます。
記事内に広告が含まれています。

Excel VBAで高速化を目指す時に役立つのが配列です。

最初はあまりイメージがつかめないかもしれませんが、何度も繰り返し使っていくとイメージができるようになっていくので諦めずに継続しましょう!

うめ
うめ

最初はコードのコピペでOKです~🙆


今回は配列にデータを格納して別シートに貼り付けるコードを紹介します。

Amazon

30日間無料登録できる「Amazonプライム会員」に登録すれば、翌日に購入した商品が届くお急ぎ便・お届け日時指定便の指定ができるので、荷物をなるべく早く受け取りたい人にオススメ!


無料体験期間中もAmazonプライムビデオや1億曲以上聞き放題のAmazon Musicなど、すべてのプライム会員特典がセットになっています!

 

 

うめ
うめ

30日間以内に解約すれば費用は発生しません!

やりたいこと

今回は配列を使用して「Sheet1」の会社情報を「Sheet2」に貼り付けます。

コードはこちら

配列格納は「CurrentRegion」が便利

CurrentRegionプロパティを使うことで値が入力されているセルのデータ範囲を自動取得できます。

CurrentRegionプロパティを使わない場合は以下のように、格納する範囲を指定しないといけません。

小さな表であれば確認できますが、大きな表の場合はどこまでのセルを配列に格納するのか確認しないといけないので不便です。

Array1 = Worksheets(“Sheet1”).Range(“A1:E11”)

うめ
うめ

セル範囲を指定すれば配列の格納はできますが、個人的にはあまりオススメしません。

配列に表全体を格納=「CurrentRegion」と覚えておきましょう!

Array1 = Worksheets(“Sheet1”).Range(“A1”).CurrentRegion

CurrentRegionの注意点

空白行が含まれている表にCurrentRegionプロパティを使うとどうなるのか検証していきます。

空白行のある表にCurrentRegionプロパティを使用

Selectでどの部分が選択されるのか確認すると…

空白行の手前のA1~E4セルまでが選択されていました。

空白行の手前までしか選択されない

CurrentRegionプロパティは空白行のないデータにしか使えないので注意しましょう。

貼り付けは「Resize」+「UBound」を使用

UBoundを使うと配列の最大インデックス数を取得できます。

Worksheets(“Sheet2”).Range(“A1”).Resize(UBound(Array1, 1), UBound(Array1, 2)) = Array1

Resize(UBound(Array1, 1), UBound(Array1, 2))にどのようなデータが入ってくるのか見て行きましょう。

UBound(Array1, 1)⇒インデックス11
データが11行あるため

UBound(Array1, 2)⇒インデックスが5
データが5列あるため

縦横のインデックス番号

配列を確認するとUBoundで取得した行と列のインデックスが設定されていることがわかります。

配列イメージ

さらに「Resize」と組み合わせることで配列の範囲を表の最大値に自動調整できます!

まとめ

今回は配列に格納したデータを別シートに貼り付けるやり方を紹介しました。

まとめ
  • 配列に表全体を格納=「CurrentRegion」
  • 空白行があると「CurrentRegion」は使えない
  • 「Resize」+「UBound」で配列範囲を自動調整

「CurrentRegion」、「Resize」+「UBound」を使いこなして効率的に作業を進めましょう!

この記事が気に入ったら
いいね ! しよう

Twitter で
この記事を書いた人

便利なガジェットレビューやPCのトラブル解消記事を書いています。
単調な繰り返し作業が苦手なので、作業効率化の仕組みを記事にしています。
月間9万PVを突破しました!
商品レビューのご依頼は「お仕事の依頼について」をご確認ください。

うめをフォローする
VBA
梅屋ラボ
タイトルとURLをコピーしました