1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【VBA初心者向け】Functionは結果を返す、Subは処理を実行する!違いを徹底解説

1
Posted at

はじめに

VBAを学び始めると、最初にぶつかるのがこれ。

「FunctionとSubって何が違うの?」
名前も似ているし、どっちもコードを書くので混乱しますよね。
ですが、実は違いはとてもシンプルです。

  • Function → 「計算した結果を返す」
  • Sub → 「処理を実行するだけ」
    この記事では、プログラミング初心者でも理解できるように、
    「お弁当屋さん」の例を使いながらやさしく解説します。

まずはコードを実行してみよう

image.png

この記事では SubFunction の違いを説明しますが、実際に動かしてみると理解しやすくなります。

まずはVBAの実行方法を確認しておきましょう。

① Excelを開く

新規のExcelファイルを開きます。

② VBAエディタを開く

キーボードで

Alt + F11

を押します。

するとVBAエディタが開きます。

③ 標準モジュールを追加する

上部メニューから

挿入
↓
標準モジュール

をクリックします。

左側に

標準モジュール
└ Module1

が追加されればOKです。

④ コードを入力する

Module1をダブルクリックし、表示された白い画面にコードを入力します。

今回は次のコードを使います。

Sub あいさつ()

    MsgBox "こんにちは!"

End Sub

⑤ コードを実行する

カーソルをコード内に置き、

F5

を押します。

または、

実行
↓
Sub/ユーザーフォームの実行

をクリックしても実行できます。

実行結果

次のメッセージが表示されます。
image.png

こんにちは!

Functionの確認方法

Function 足し算(a, b)

    足し算 = a + b

End Function

↓イミディエイトウィンドウが開く

Ctrl + G

↓開いたウィンドウに以下を入力する

? 足し算(3, 5)

↓そのままEnterを押す

8

が表示される

これでVBAの実行環境の準備は完了です。

以降は、この実行方法を使いながら SubFunction の違いを確認していきます。

まずは結論から

Function(ファンクション)

「はい、これ使ってね!」と
結果を返してくれるもの

Function 足し算(a, b)
    足し算 = a + b
End Function

Sub(サブ)

「やることを実行して終わり」のもの

Sub あいさつ()
    MsgBox "こんにちは!"
End Sub

イメージで理解

Function は「お弁当を渡してくれる店員」

あなた:

唐揚げ弁当ください!
店員:
はい、唐揚げ弁当です!
ちゃんと「結果(お弁当)」が返ってきます。

Sub は「呼び込みスタッフ」

スタッフ:

いらっしゃいませー!!
これだけ。
何かを返してくれるわけではありません。
ただ「動作を実行しただけ」です。

実際のコードで見てみよう

Sub の例

Sub あいさつ()
    MsgBox "こんにちは!"
End Sub

これは、

  • メッセージを表示する
  • それで終了
    という処理です。
    結果を返していません。

実行結果

こんにちは!

と表示されるだけです。

Function の例

Function 足し算(a, b)
    足し算 = a + b
End Function

これは、

  • 2つの数字を受け取る
  • 計算する
  • 結果を返す
    という処理です。

呼び出してみる

Sub テスト()
    Dim 結果
    結果 = 足し算(3, 5)
    MsgBox 結果
End Sub

実行結果

8

が表示されます。

重要なこと

Sub は「実行するだけ」

Sub 電気をつける()
    MsgBox "電気ON"
End Sub
  • 動作する
  • でも値は返さない

Function は「結果を返す」

Function 消費税計算(金額)
    消費税計算 = 金額 * 0.1
End Function
  • 計算結果を返す
  • 他の場所で使える

使い分けはこれだけ覚えればOK

やりたいこと 使うもの
処理を実行したい Sub
計算結果を返したい Function

初心者が混乱しやすいポイント

「FunctionでもMsgBox使えるじゃん?」

その通りです。

image.png

Function テスト()
    MsgBox "こんにちは"
End Function

これも動きます。
でも、本来のFunctionの役割は、

「値を返すこと」
です。
なので基本的には、

  • 表示や操作 → Sub
  • 計算や判定 → Function
    と覚えるのがおすすめです。

実務ではどう使う?

Sub

  • ボタンを押したら実行
  • シート操作
  • ファイル保存
  • データ入力
    など。

Function

  • 合計計算
  • 税率計算
  • 判定処理
  • 文字変換
    など。

イメージすると覚えやすい

Sub

「仕事をする人」

Function

「答えを返してくれる人」

まとめ

Function

  • 値を返す
  • 計算向き
  • 他の処理で使いやすい
Function 足し算(a, b)
    足し算 = a + b
End Function

Sub

  • 処理を実行する
  • 値は返さない
  • マクロ実行向き
Sub あいさつ()
    MsgBox "こんにちは!"
End Sub

最後に

最初は、

「SubとFunctionどっち使えばいいの…?」
となりますが、実はかなり単純です。

  • 「結果を返したい」 → Function
  • 「処理だけしたい」 → Sub
    まずはこれだけ覚えればOKです。
    慣れてくると自然に使い分けできるようになります。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?