Warning: The magic method InvisibleReCaptcha\MchLib\Plugin\MchBasePublicPlugin::__wakeup() must have public visibility in /home/c3541351/public_html/guakw.info/wp-content/plugins/invisible-recaptcha/includes/plugin/MchBasePublicPlugin.php on line 37
SubとFunction、どっちを使えばいいの?違いは「上司への報告」で全部わかります! | ぐー@高配当株ブログ

SubとFunction、どっちを使えばいいの?違いは「上司への報告」で全部わかります!

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。

いつもブログをご覧いただき、ありがとうございます!

「VBAを覚えれば楽になるはず」と思って始めたのに、Sub と Function の使い分けで、「どっちを使えばいいの?もう嫌だ…」と落ち込んでいませんか?

私も最初は同じことで悩んでいました。今日は、そんな悩みをわかりやすい方法で解決します。

それではいきましょう!

【業務効率化】VBAの記事を見る

1. ズバリ、違いは「報告(戻り値)」があるかないか

教科書的な説明は一旦忘れてください。現場では、この1点だけ押さえればOKです。

  • Subプロシージャ:作業をお願いしたら、やりっぱなしで終了。「やっといたよ!」で終わり。
  • Functionプロシージャ:作業をお願いしたら、計算結果や答えを持って帰ってくる。「計算結果は〇〇円でした!」と戻ってくる。

この「持って帰ってくる答え」のことを、プログラミング用語で「戻り値(もどりち)」と呼びます。

2. イメージは「上司と部下」の関係

あなたが上司(メインのプログラム)だとして、部下(SubやFunction)に指示を出す場面を想像してください。

  • Subへの指示:「Aさん、この書類をコピーしておいて」
    Aさん(Sub)はコピーをして終了です。「コピーしました」とは言うかもしれませんが、あなたに何か「値」を渡すわけではありません。
  • Functionへの指示:「Bさん、この見積書の消費税額を計算して教えて」
    Bさん(Function)は計算し、「3,000円です」という数値(戻り値)をあなたに手渡します。あなたは、その3,000円を使って、次の処理(合計金額を出すなど)ができます。

3. 実際のコードで見てみよう(コピペOK)

では、実際に消費税(10%)を計算するコードで比較してみましょう。VBE(エディタ)に貼り付けて試してみてください。

① Subプロシージャの場合(やりっぱなし)

' 計算して、その場でメッセージを表示して終わる
Sub ShowTax_Sub()
    Dim price As Long
    price = 1000
   
    ' ここで計算し、ここで完結!
    MsgBox "Subでの計算結果: " & price * 0.1
End Sub

② Functionプロシージャの場合(答えを返す)

' 計算担当のFunction(これ単体では動かないことが多いです)
Function GetTax_Func(price As Long) As Long
    ' 計算結果を「関数名」に入れることで、呼び出し元に返す
    GetTax_Func = price * 0.1
End Function

' Functionを使うためのメインのSub
Sub Main()
    Dim price As Long
    Dim tax As Long
   
    price = 1000
   
    ' Functionを呼び出して、結果(tax)を受け取る!
    tax = GetTax_Func(price)
   
    MsgBox "Functionから受け取った税額: " & tax
End Sub

Functionのほうは、tax = GetTax_Func(price) というように、計算結果を変数taxに代入できています。 これが「答えを受け取っている」状態です。

4. どう使い分ける?

「結局、どっちで書けばいいの?」と迷ったら、こう考えてください。

  1. 基本は Sub で書く
    「ボタンを押したら処理開始」「データを転記する」など、動作そのものが目的の場合は Sub です。
  2. 「計算式」のような役割なら Function
    「消費税計算」「氏名から苗字だけ抜き出す」など、何度も使う計算処理は Function にしておくと便利です。なぜなら、もし税率が変わっても、Function の中身を1箇所直すだけで、すべての計算が修正できるからです。

最後に

こうしてみると「難しそう…」と思っていた壁が、少し低く見えてきませんか?

ITやプログラミングは、最初から完璧に理解する必要はありません。まずは「答えが返ってくるのがFunction」という点だけ覚えていれば大丈夫です。

お察しの良い人はお気づきかもしれませんが、「さまざまなFunctionをたくさん用意しておいて、必要なときに組み合わせて業務用ツールを開発する」ことも可能です。

もっと高度で複雑な業務ツールやシステム開発ではそうしていることが多いです。

つまり、今回の内容を理解していると、ゆくゆく応用が効きやすいということです!

一緒にがんばっていきましょう!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、ぜひ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました