VBA

【ExcelVBA】Functionプロシージャとは(やさしい図解付き)

ねぇもりさん、Functionプロシージャってむずかしいね。
「引数を渡す」とか「値を返す」とか、さっぱりわからないよ
もり
もり
わたしも最初のころは苦戦したな~
でもFunctionプロシージャをマスターしたら開発の幅がグンと広がって、楽しくなるよ

Functionプロシージャは、VBA入門者が苦手意識をもちやすい機能のひとつですね。

この記事で苦手意識を吹き飛ばして、開発の幅をグンと広げましょう!

具体的な処理を見る前に、まずはイメージづくりからしていきましょう。

Functionプロシージャとは?

もり
もり
まずは会社のこんな場面をイメージしてみよう

オフィスワークでの例

あなたの部署に、来月から新しい社員が来ることになりました。
業務をしてもらうために、パソコン操作用のアカウントが必要です。

多くの企業では、社内のIT部門で専任の担当者が実施していますね。

各部署で個別にやることも可能ですが、

  • 各部署の本業にかけるべき時間が失われる
  • 不慣れな作業者が操作を間違えると、データが壊れるかもしれない(危険)

などの理由で、各部署で個別に作業するのは非効率的です。

会社全体にとっても、各部署にとっても、作業者を共通化したほうが効率的ですね。

function1

VBAでも、一つのマクロのなかで何度も同じ処理をする場合、処理を共通化することで、何度も同じコードを書く必要がありません。

この「共通化した処理」がFunctionプロシージャです。

【依頼をする側】と【依頼を受ける側】

世の中には、「依頼をする側」と「依頼を受ける側」がありますね。たとえばこのようなビジネスです。

  • データを送ると、分析結果を納品してくれるコンサルティング
  • 領収書をまとめて送ると、記帳してくれる経理代行業

これらに共通するのは、

【依頼をする側】
データを渡して、処理結果を受け取る

【依頼を受ける側】
データを受け取り、処理をして、結果を返す

→Functionプロシージャは【依頼を受ける側】である

このイメージがつかめればオッケーです。

 

Functionプロシージャの文法

それでは具体的な文法をみていきましょう。

【呼び出す側】(依頼をする側)

①返り値を変数に格納する場合

②返り値を直接使用する場合(Boolean型など)

※Subプロシージャを呼び出す際は、Call プロシージャ名と記述しますが、Functionプロシージャを呼び出す際には、Callは使用しません。

【呼び出される側】(依頼を受ける側)

アカウント作成処理にあてはめてみると

function2 function3

番号①②③の対応関係は下記のとおりです

【呼び出す側】
①引数を渡して呼び出す

【呼び出される側】
②処理する
③処理結果を返す

Functionプロシージャのコードをみてみよう

だいぶイメージができあがったところで、具体的なVBAのソースコードをみていきましょう。

本体価格を渡すと税込金額が返ってくるプログラムです。

  • 引数:本体価格
  • 返り値(戻り値):税込価格

呼び出す側

呼び出される側

これがFunctionプロシージャです。

実行結果がこちらです。
function4

値の流れはこうなっている

function5

以上がFunctionプロシージャのイメージです。

もり
もり
それでは、最後におさらいしよう!
Functionプロシージャは
  1. 値を受け取り
  2. 処理をして
  3. 結果を返す

これを使いこなせると、開発の幅がグンと広がって、あっという間に脱・入門です!がんばって!

非エンジニアもプログラミングを学習する時代!

「プログラミング」ってエンジニアとかプログラマーの人がするものでしょ?文系の私には関係ないや~って思っていませんか?

いまは、非エンジニアもプログラミングを学習する時代です!

「プログラミングの必修化」をご存知ですか?

  • 2020年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!