表内のデータを指定した条件で抽出し、別の表に転記したいケースはよくあります。ここでは、売上のデータの表から、指定した顧客のデータを抽出し、請求書を自動作成するVBAを解説します。

 売上のデータが格納される表はワークシート「売上」のA4~F26セルとします(見出し行も含む)。列は左から日付、顧客、商品、単価、数量、金額とします。B2セルに目的の顧客名を入力し、右隣にある[請求書作成]ボタンをクリックすると、ワークシート「請求書」にその顧客の請求書が作成されます(図1)。

図1●売上データの表から指定した顧客のデータを抽出し、請求書の表に貼り付ける
図1●売上データの表から指定した顧客のデータを抽出し、請求書の表に貼り付ける
[画像のクリックで拡大表示]

 ワークシート「請求書」には、請求書のひな形をあらかじめ用意しておきます。[請求書作成]ボタンをクリックすると、A3セルに宛名として顧客名がワークシート「売上」のB2セルから転記されます。さらに指定した顧客の売上データを抽出して、6行目以降の表に転記します。転記するのは、「顧客」の列を除いたすべてです。これらの処理をマクロで自動化します。なお、E21セルの合計を求めるのにはマクロを使わず、あらかじめSUM関数を入力しておくとします。

 以上の機能を備えたプログラムがリスト1にあるSubプロシージャ「請求書作成」です。コードは標準モジュールのModule1に記述しています。ワークシート「売上」の[請求書作成]ボタンは図形の角丸四角形で作成しており、右クリック→[マクロの登録]からSubプロシージャ「請求書作成」を登録することで、クリックで実行可能としています。

リスト1●請求書を作成するSubプロシージャ「請求書作成」(標準モジュールのModule1に記述)
リスト1●請求書を作成するSubプロシージャ「請求書作成」(標準モジュールのModule1に記述)
[画像のクリックで拡大表示]

 同SubプロシージャではString型変数cstmrを用意し、ワークシート「売上」のB2セルに入力された目的の顧客の文字列を格納して、以降の処理に用いています。まずは請求書の宛名欄に顧客名を入力する処理に用いています(1)。また、Subプロシージャ全体で、ワークシート「売上」のオブジェクトである「Worksheets("売上")」の記述はWithステートメントを利用してまとめています(2)。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。