VBAクッキング③ なぜ短いコードで動くのか?~はじめての部品化~

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

実際のコードを見て、

「え?これだけ?」

と感じた方も多かったのではないでしょうか。

私自身もVBAを学び始めた頃は、

For
If
Cells
Range

を延々と書くものだと思っていました。

しかし実際に業務ツールを作るようになると、毎回同じようなコードを書いていることに気付きました。

そこで考えたのが、

「よく使う処理を部品として再利用する」

という考え方です。

ただ、

  • Functionって何?
  • CALLって何?
  • モジュールって何?

と思った方もいるかもしれません。

今回の記事では、VBAクッキングの土台となる

部品化の仕組み

について、実際に手を動かしながら学んでいきます。

なぜ短いコードで動くのか

前回のコードの振り返り

下の画像は前回にお見せした、部品を使用したコードです。

転記処理のコード

短いコードですが、マッピング表の各行を繰り返し読み込んで転記処理を行っています。

裏側の仕組み

裏側では、下記の1行だけで複数行を呼び出しています!

lastRow = Module_Parts.部品_最終行取得(ThisWorkbook, "転記元", 2)

下の画像が実際に呼び出された箇所です。

上の画像はコードのすべてではないですが、呼び出されると複数行が実行されるので、1行だけでかなりのことが行える仕組みになっています。

それでは、次からは実際に簡単なコードを書いてみて、短いコードで動く仕組みを実感して頂きたいです。

そのためには、VBAの基礎を解説させてください。

既に学んでいるという方は飛ばして頂いて結構です。

====次の====まで飛ばし可====

VBAの基礎

開発タブの追加

まずはエクセルの上の画面に「開発タブ」を追加するのがスタートです。

通常は「開発タブ」は表示されていません。

こちらは「リボンのユーザー設定」から表示設定を行います。

そのためには、下の画像のエクセル画面上の「ファイルタブ」をクリックし、「その他」⇒「オプション」と進んでください。

そうすると「リボンのユーザー設定」が表示されます。

リボンのユーザー設定の右側に「開発」とあるので、こちらにチェックを入れてください。

そうすれば、エクセル画面の上に開発タブが追加されます。

開発タブが追加されたら、上の画像の「Visual Basic」の箇所をクリックしましょう!

そうしたら、コードを書く画面が表示されます。(Alt+F11でも同じことができます)

もし、ワークシート画面に戻る場合は、上の画像のエクセルマークをクリックします。

変数の宣言を強制する

こちらは魔法の呪文みたいなものだと思ってください。

必ず行っておきましょう!

Visual Basic画面の上の「ツール」をクリックしましょう!

上の画像のように、ツールをクリックすると「オプション」というのが表示されます。

こちらで、下の画像の「変数の宣言を強制する」の箇所にチェックを入れておきましょう!

標準モジュールを作成

フォルダとの違い

前回、モジュールとはフォルダのようなものと解説しました。

但し、通常はフォルダの中にファイルを作成し、更にファイルに書き込みを行いますが、このモジュール内には関連の処理を直接書いていきます。

関連の処理とはこの場では、「Sub~End Sub」「Function~End Function」を書くと覚えておいてください。

SubやFunctionを一つの単位として、色々とコードを書いていくイメージになります。後述する「Call」まで実際に行って頂くと、イメージがかなり鮮明になると思います。

実際にモジュールを作成する

下の画像の標準モジュールにて、右クリックしてください。

「挿入」と表示されたら、右側の矢印をクリックしてください。

そしたら、下の画像の「標準モジュール」をクリックしてください。

モジュールにも3種類がありますが、あくまで「標準モジュール」が正しいので、そちらはお気をつけください。

標準モジュールが追加されたら、下の画像のようになります。

モジュール名はプロパティ画面から変更できます。

モジュールにコードを追加する

コードは前述のようにSub~、Function単位で記述します。

試しに、下のコードを追加したモジュールに貼り付けてみてください。

Sub TEST()

 MsgBox "Hello World!"

End Sub

次に、コード上にカーソルを置いたまま、下の画像の左上の方にある「実行ボタン|▶(緑色)」をクリックしてください。

そうすると、コードが実行され、「Hello World」とメッセージが表示されます。

ちなみに「Sub~End Sub」で書かれた一式を「プロシージャー」と呼びます。

その他

拡張子

VBAコードを書いたら、ファイルは拡張子を「.xlsm」にして保存してください。

そうでないと、コードが保存されません。

マクロファイルを開く

マクロファイルはセキュリティ上、問題となるケースがあります。

ですので、初めて開くファイルの場合は警告が出てマクロ(コード)が動きません。

その場合は、エクスプローラーで該当ファイル上で右クリックをします。

すると「プロパティ」が表示されます。下の画像にこちらから詳細画面に入ってください。

「許可」というチェックボックスがあるので、そちらにチェックを入れてください。

いずれにしろ、作成元が不明なマクロファイルはうっかり開かないようにお願いします。

====

はじめての関数(Function)

関数とはワークシート関数のSUM関数のようなものです。

違いは、ワークシート関数は最初から呼び出さるようになっています。

VBAの場合は自作する必要があります。(このコースではインポートもしくはコピーする)

試しに簡単な関数を作成してみましょう!

下のコードを追加したモジュールにコピーしてください。

Function 足し算()

 足し算 = 10 + 20

End Function

関数をコピーしたら、今度は作成した関数を呼び出すコードをコピーしてください。

Sub 呼び出し()

  MsgBox 足し算

End Sub

上のコードの「呼び出しプロシージャー」を実行するとどうなるでしょうか?

関数内にも、プロシージャー内にも「足し算」という内容があります。

この場合、関数内の「足し算」の右辺(足し算 = 10 + 20)がそのまま、足し算の中身になります。

ですので、以下がの画像のように、30がメッセージで表示されます。

コメントを残す

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