2019年11月21日20代怠け者VBAで取引先ごとにシートを追加するにはどうすればいいの?シートの名前は取引先の名前にしたい取引先シートごとに取引金額を転記したいコピペで作業できるようにしてほしいこの記事ではExcelVBAで「取引先ごとにシートを追加し、シート名を取引先名に変更、取引金額を転記する」サンプルコードを紹介します。この記事内のサンプルコードをコピペして設定するだけで、作業の自動化が可能です。このサンプルコード中の処理についても、詳しく解説しています。ご参考までに、それではどうぞ。今回のコードでは画像のようにデータ順にシートが追加され、各シートのA1セルに取引金額が転記されます。少々複雑なので順にコードを解説していきますね。Next」について解説します。iポイントは、上記の「シートの値からデータを取得する」処理です。Next」では、カウンターに設定した変数がループするごとに変化していきます。5」つまり「2」から「5」まで変化していきます。画像のセルから順番にデータを取得することになります。1)こうして取得したデータを変数「trgtShName」に定義し、シートを追加、名前を変更する処理を繰り返しています。続いても繰り返し処理ですが少し違った書き方となります。Each」は指定した範囲内の全ての要素に対して処理を行います。ここでは、「ThisWorkbook.Worksheets」内の全ワークシート「ws」に対して処理を行っています。For」で繰り返し処理を抜けています。この処理で、コピーしようとしているデータ名のシートがすでにワークブック内に存在しているかどうかを確認することができます。この判定をいれずシート名の重複を確認しないと、同一のデータがあった場合、画像のエラーが出てマクロが止まってしまうので注意しましょう。最後にシートを追加する部分で使われている「ThisWorkbook.Worksheets.Count」について解説します。bufここでは処理実行時点でワークブック内にいくつワークシートがあるかを確認しています。画像の状態なら「ThisWorkbook.Worksheets.Count」は「2」となります。「ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)」で、一番右(末尾)のシートを取得することができます。取得したシートを「Worksheets.Add」の位置指定「After」に指定することで、新しいシートを末尾に追加しています。追加直後のシートは「ActiveSheet」で取得できるので、事前に取得した「trgtShName」にシート名を変更しています。続いて、「DATA」シートに記載されている取引金額を変数「buf」に定義して新しく追加したシート「trgtSh」に転記しています。Next」のカウンター「i」を使って画像のように定義しています。2)以上、コピペでできるExcelVBAでの「取引先ごとにシートを追加し、シート名を取引先名に変更、取引金額を転記する」方法の紹介でした。コード内で解説した繰り返し処理やシート数を数える処理もコピペでできますので、試してみてください。旅行テクニックSIMカード東南アジアニュージーランド屋久島20代怠け者2015年10月にITエンジニア職を退職後、1年弱ほどワーキングホリデーのためにニュージーランドに移住、帰国後はフリーランスのブロガーとして活動中。現在はHowTo系ブログ「Tipstour」と投資・不労所得について語る「怠け者の20代が投資やってみたブログ」の2つを主に運営中!ITエンジニアの経験を活かして、コンピュータやソフトのHowTo、旅行テクニックまで、様々なTipsを幅広く紹介しています。旅行テクニックSIMカード東南アジアニュージーランド。