エクセル・VBA

VBA|functionとsubの違いは?|パソコン教室講師が詳しく解説

エクセルVBAのfunctionとsubの違いを紹介している女性の画像

今回は、VBAのfunctionとsubの違いを詳しく解説しますので、正しい使い分けを知りましょう。

苦手な方専門のパソコン教室

FunctionとSubの違いとは?

functionとsubの違いに疑問を抱いている女性の画像

Excel(エクセル)のVBAマクロにおいて、Function(ファンクション)とSub(サブ)は何かと登場回数が多く、しかも違いが良く分からないケースもあります。

FunctionとSubは使い方がほぼ同じですから、区別しないで使用してしまっている人も珍しくないでしょう。

端的にいえば、前者は戻り値を返すことが可能で、後者は戻り値がないという違いがあります。

つまり実行結果を判定したい場合は前者を、その必要がない時は後者を使用する形です。

他に大きな違いはありませんから、仮に間違って使用しても致命的な問題は発生しないと思われます。

プログラミングをすると似たような処理を何回も書かなければならないことがあります。

その場合、同じような処理を一つの関数として定義して、呼び出せるようにします。

またあまりにもプログラムが長い場合、ある程度のまとまった部分を関数にすることもあります。

VBAマクロでは関数に相当するものをプロシージャと呼びます。それにはFunctionやsubといったものがあり、使い方も変わります。

functionプロシージャは処理後に何らかの値を呼び出し側に戻すことが出来ます。

Subプロシージャは通常それは出来ないようになっています。

ですので値が戻ってくるようにしたい場合はFunctionプロシージャで定義します。

苦手な方専門のパソコン教室

FunctionをSubプロシージャと比較しない

FunctionをSubプロシージャ比較しないことを紹介している女性の画像

Functionは、Subプロシージャと比較しないほうが分かりやすい、という場合もあります。

例えば、プログラムに関する知識が乏しく、戻り値についてハッキリと理解できていないケースがその1つです。

難しく考え過ぎて理解が遠のく、そういった可能性もありますから、最初は無理に比較をしなくても良いでしょう。

VBAマクロに慣れてきたら比較をする、という段階的な学習を心掛け、必要に応じて比較を始めるのが賢明です。

2つのプロシージャを使用することが出来るため便利な面もありますが、どちらを使っていいのか迷うこともあると思います。

というのは作っている間に仕様の変更があって、値を戻さなくても良くなったり、その逆の値を戻す必要が出てきたりもします。

またFunctionプロシージャでは値を戻さなくてもエラーにならないので、後からSubやFunctionの定義を書き換える手間を考えれば、最初からFunctionプロシージャとしておいた方が分りやすくて良い時もあるのです。

Subプロシージャと混乱しがちな部分

Subプロシージャと混乱するを表現している女性の画像

VBAマクロのプロシージャは、複数の処理を1つにまとめたものを指します。

Subプロシージャはこの処理の単位のことで、プロシージャ名に始まりEndを付けたSubで終わります。

この間に複数の処理を記述することによって、一連の処理が1つにまとめられるわけです。

Functionの場合は、プロシージャ名に値を代入することで、それを戻り値として呼び出し元に返せます。

Subで同じことをやっても戻り値は返せませんから、ここで躓いたり混乱を生じることがあるので要注意です。

FunctionとSubのプロシージャはどちらも一部の処理を切り出したりして、汎用的に使えるようにするためにあるのですが、その点に関しては全く同じなので値を戻すことが無ければどちらを使っても構いません。

Subプロシージャだけでも作ることが出来ないことはないので、Functionプロシージャの必要性を感じない人もいると思いますし、混乱することもあるでしょう。

そのように混乱する場合、値を戻す必要がある時は必ずFunctionプロシージャを使うと決めておくと良いかもしれません。

Functionプロシージャ以外でも値が返せる

Functionプロシージャでなくとも値が返せるを表現している画像

値を返す為にはFunctionプロシージャが必要ですが、実は使わなくても返せる方法があります。

それは何処からでも参照できる変数を用意しておき、プロシージャ内で値を変更するやり方です。

何処からでもアクセス可能な柔軟性によって、値の正確性については保証が難しいですが、Functionプロシージャを使いたくない場合の代替手段にはなります。

他にも、処理中に他のプロシージャを呼び出すことによって、複数間で値のやり取りが可能です。

一般的には、Subプロシージャはその処理で出てきた結果を戻す必要の無い時に使いますが、実はSubプロシージャでも戻すことが可能なのです。

それはSubプロシージャで定義する引数のタイプをByValからByRefに変えると出来ます。

ByValは値渡しと呼ばれ、ByRefは参照渡しと呼ばれたりします。

ByRefを使うと、Subプロシージャ内でその引数の値を変えると、呼び出し側の変数の値も変わります。

つまり、呼び出し側で変わった値をそのまま引き継ぐことが出来るのです。

また外部変数として定義した変数をSubプロシージャ内で変更することでも値を返すことが出来ます。

Excel(エクセル)のVBAマクロでは、FunctionやSubプロシージャの引数を複数指定できますので、関数の引数は呼び出し時に必要なものを検討してから作成しましょう。

FunctionをSUM、IF等の関数として見る

関数とみることができるを表現している男性の画像

FunctionはSUMやIFといった関数的な性質を持つので、同等の存在として見ることができます。

つまり、Functionを使えばSUMなどの関数を生み出せる、といった考え方が可能なわけです。

万能ですが使い方は奥深いので、その分良く理解して上手に活用したいところです。

いわば万能ナイフのような存在ですから、使い手によって価値が引き出せたり、逆に上手く使いこなせないこともあるでしょう。

Subとの組み合わせによって可能性が広がるので、その点もFunctionならではの魅力です。

プロシージャは最初に書いた通りプログラムの一部を関数にしたものなのですが、SUMやIFといった関数としても見ることが出来ます。

特にFunctionプロシージャだとその中で処理した後に、値を返してくれるので、それらの関数とまったく同じことが出来ます。

例えばFunctionプロシージャ内でデータの合計をしてその値を戻すようにすればSUM関数になります。

また条件文を使った処理をすればIF関数にもなるのです。

本格VBA講座を紹介しているリンク画像

ココがおすすめ

パソコン教室へのお問い合わせはこちらから

お問い合わせはこちら

    【 お名前 *必須

    【 携帯電話 *必須

     
    【 メールアドレス 】

    【 ご希望レッスン 】
    実店舗レッスンオンラインレッスン企業研修パソコン修理依頼

    【 都道府県名 & 市区町村名 &(あれば区名) 】

    【 ご質問などあればご記入ください 】

    お問い合わせいただきありがとうございます。送信ボタンを押した後、下に「内容を送信しました。ありがとうございます。」とでれば送信完了です。基本的には「090-9503-8923」の電話番号にておかけします。教室の内容についてご質問などあればお伺いできればと思います。

    お問合せリンク画像

    ココがおすすめ

    オンライン対応しております

    オンライン対応しております

    パソコン教室でのレッスン」も「Zoom(ズーム)」を利用した「オンラインレッスン」どちらも対応可能です。

    パレハのパソコンレッスンは、オンラインなのに「生で質問」出来るのが特徴です。

    詳しくは下記をご覧ください。

    オンラインパソコン教室|オンラインなのに生レッスン

    ココがおすすめ

    パソコン教室パレハ直営校

    パソコン教室パレハ直営校

    ■ パソコン教室パレハ広島市安佐南区緑井校

    ■ パソコン教室パレハ広島市中区本通り校

    ■ 広島市西区にあるパソコン教室パレハ横川校|マンツーマン教室

    ■ パソコン教室パレハ 静岡市駿河区南町校・静岡市葵区伝馬町校

    ココがおすすめ

    パソコン教室パレハグループ加盟校

    自信をもってご紹介できるパソコン教室

    下記はパレハグループ加盟校となります。

    料金体制などは異なりますが、パソコン教室パレハが自信をもってご紹介できるパソコン教室です。

    下記はパレハグループ加盟校となります。

    料金体制などは異なりますが、パソコン教室パレハが自信をもってご紹介できるパソコン教室です。

    ■ 岩出市のパソコン教室キュリオステーション

    ■ 岩出市にあるパソコン教室 「キュリオステーション 岩出店」の公式サイトはこちら

    ■ 名古屋市緑区にある有松パソコン教室

    ■ 愛知県名古屋市緑区にあるパソコン教室 「有松パソコン教室」の公式サイトはこちら

    ■ 福岡市パソコン教室平尾校

    ■ 福岡県福岡市中央区にある 「福岡市パソコン教室平尾校」の公式サイトはこちら

    ■ 調布市にあるパソコン教室キュリオステーションつつじヶ丘店

    ■ 調布市にあるパソコン教室「キュリオステーションつつじヶ丘店」の公式サイトはこちら

    ■ 宮崎市にあるパソコン教室Cosmarp(コスマープ)

    ■ 宮崎市にあるパソコン教室Cosmarp(コスマープ)の公式サイトはこちら

    全国加盟校一覧

    全国のパソコン教室一覧(実店舗&オンライン)|パレハ直営校&グループ加盟校

    ココがおすすめ

    オンライン形式をご希望の方はこちら

    オンライン形式をご希望の方はこちら

    東京・名古屋・大阪・福岡・札幌・横浜・仙台・埼玉・千葉・沖縄などで受講したい方はオンラインレッスン(Zoomを使ったオンライン個別レッスンです)をお選びください。

    オンラインパソコン教室|オンラインなのに生レッスン

    ココがおすすめ

    パソコン教室講座一覧はこちら

    パソコン教室講座一覧はこちら

    他にもパソコンの講座は多数ございます。

    詳しくは下記をご覧ください。

    パソコン教室の受講コース案内(講座のご紹介)

    ココがおすすめ

    パソコン教室に関連する情報はこちら

    こちらも是非ご覧ください

    ココがおすすめ

    パソコンの操作情報はこちら

    マクロとVBAの違いとは?|わかりやすく解説します

    メールの画像

    メールはこちら

    ラインの画像

    LINEはこちら

    電話の画像

    お電話はこちら