VBAクッキング② 転記マッピングシートパターン

毎月こんな修正をしていませんか?

A列だったものがB列になった

転記先のセルが変更になった

シート名が変わった

そのたびにVBAを修正する。

生成AIを使ってコードを書いたとしても、結局はコードの修正が必要になります。

そこで私が考えたのが、

「コードを変更するのではなく、設定を変更する」

という方法です。

今回紹介する転記マッピングシートパターンでは、

  • 転記元
  • 転記先
  • シート名

をシート上に設定するだけで、転記内容を変更できます。

しかも実際に実行するコードは驚くほど短くなります。

今回はその仕組みを実際の画面を使って紹介します。

前回の記事では、今回のシリーズのコンセプトそのものについて解説しましたが、具体的内容に入っていきましょう!

私が目指したもの

コード修正ではなく ⇒設定修正で済む世界です!

しかも、次回同じような転記ツールを作成する場合も、転記ツールをコピーして済む世界です。

転記マッピングシートとは

それでは、

転記マッピングシートについての解説を「概要」と「詳細」に分けて解説します。

概要

下の画像は、転記元と転記先の情報を事前に記したシートです。

マッピング表

こちらのマッピング表内では、転記元の「シート名」「転記元の行位置」「転記元の列位置」を記します。

それでは、実際の転記元についてみてみましょう!

下が転記元の画像です。

転記先は請求書のテンプレートです。

転記元で事前に、請求書の情報を記載して転記処理を行うというわけです。

マッピング表の右には、もちろん転記先も記してあります。

それでは次に、転記先について見てみましょう!。

下が転記先の画像です

赤字が実際に転記されるセルです。

冒頭のマッピング表には、解説した転記元と転記先の「シート」「行位置」「列位置」がまとめて記されているわけです。

詳細

マッピング表は1行毎に転記元と転記先の情報が記してあります。

作成するコードは1行毎に転記情報を取得し、転記処理を行います。

ということは、マッピング表の情報を変えれば、転記元や転記先を変えることができます。

ちなみに、画像内で列名が「A、B、C・・・」ではなく。「1、2、3・・・」で表示されています。

これはコードが列を「数値」で扱えるようにするために、エクセルの表示の仕方を変えてあります。

R1C1形式(列位置を数値にする仕組み)

列を数値で表示するには、まずエクセルの画面上のタブ「ファイル」⇒「その他」⇒「オプション」で変更します。

オプションの画面が表示されたら、上記の画像内の「数式」をクリックし、「数式の処理」の欄で「R1C1 参照形式を使用する」にチェックを入れます

そうすると、列の表示が変わります

実際のコードの内容

コード

以下の画像は、マッピング表を使用し転記処理を行う為のコードです。

エクセルファイル内でコードを書く画面の「Visual Basic」の画面の一部をそのままスクショしました。

実際のコード

いかがでしょうか?

え、これだけ・・・と感じましたでしょうか?しかも日本語が多い・・・

これは別な箇所に部品のコードがあり、そちらを呼び出して実行しているからです。

既に書いてあるコードを利用することで、カップラーメンのように少ない作業で処理が完了するわけです。

ついでに、部品名も工夫してあります。

部品名

コード内の「部品_最終行取得」の部品がどう書かれているかを、「概要だけ」見てみましょう。

部品_最終行取得

上の画像の左に注目してください、標準モジュールの下に「Module_Parts」があります。

こちらに部品のコードが書かれています。

モジュールとは何?と思われた方は、今の段階では、ファイルの格納箇所を区分する「フォルダ」みたいなものです。

こちらの「Module_Parts」に部品「Function」として部品のコードを書いてあります。

このFunctionとは何?と思われた方は、ワークシートで使う「SUM関数」みたいなものだと思ってください。

次回、モジュールと合わせて詳細に解説します。

ちなみに、

作成した関数は、関数が書かれているモジュール名(フォルダ名)を書いて、更にピリオドを付けると、モジュール内の内容が選択できます。

便利なので、ぜひ覚えておいてください。

本題に戻ります。

コードの日本語化

関数の書き方自体も工夫していて、まず日本語名で関数を作成して、更に英語名の関数を呼び出すようにしています。

そうすることで、部品を日本語で扱えるようにしています。

部品についてはもちろん、読者の方に作成してもらうことは考えておりません。

次回の回で提供致します。

実は裏側で5つの部品が動いている

構成部品

上のコードの画像内には3つの部品が見えたはずです。

実際には、もう2つの部品が「部品_転記_セル単位」内で働いています。

ここで「部品_代入_セル」は、何を行う部品なのかはすぐにイメージできると思います。

代入元と代入先のセル位置を指定して、値を代入します。

部品_シート存在チェックはどうでしょうか?

何をするかがすぐにイメージできないかもしれません

エラーチェック

部品_シート存在チェックを組み合わせているのは、マッピング表にファイル内に存在しないシートが指定された場合の処理の為です。

例えば、ファイル内に存在しない「売上」というシートを下の画像のように転記先に指定したとします。

そうすると、部品_シート存在チェックがマッピング表の1行毎に「シートの存在」をチェックします。

上のGIF動画は、実際にエラーが表示される時の様子です。

エラーの内容は、下の画像のように結構詳細に表示されます。

こういったエラー処理の仕組みも部品にはきめ細かく組み込まれています。

ですので、未経験の方でも無理なくVBA作成を進められるように工夫しています。

<まとめ>

今回は転記マッピングシートと部品を組み合わせることで、少ないコードで転記ツールを作れることを紹介しました。

しかし、

実際にコードを呼び出している

・Function

・CALL

・モジュール

についてはまだ説明していません。

次回は、なぜ少ないコードで動くのか、
「部品化の仕組み」を解説します。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です