スポンサードリンク

Excel VBA オリジナルのユーザー定義関数を、さらに改良してみましょう。

ExcelVBAで、ユーザー定義関数を作成するメリットの一つが、自由に改良できることです

例えば以下のように、「桁区切り」と、「円」の表示ができるように改良してみましょう。

excel-vba-53.gif


【1】Excelのファイル「gankin.xls」を開きます。

*マクロを有効にする

ダウンロードしたものでも、あなたが作成したものでもかまいません。


【2】VBEを起動します。

*「Altキー」+「F11キー」


【3】標準モジュールの「Module1」を選択し、コード(プログラム)を表示します。

excel-vba-42.gif

コードウィンドウには、ユーザー定義関数の calcGankin() が表示されます。


【4】calcGankin()をコピーして、すぐ下に貼り付けます。

excel-vba-43.gif

でもそのままだと、関数名が重複するのでダメです。

同じ関数名では、コンピューターが区別できないので、エラーになります。


【5】そこで新しいユーザー定義関数を、「calcGankinF」に変更します。関数名を変える場合は、戻り値の部分も変えなくてはなりません。

excel-vba-44.gif

上の図のように2箇所変更してください。


【6】この段階で calcGankinF() を使うと、calcGankin()と全く同じ結果になります。

excel-vba-45.gif

プログラムをコピー&ペーストしたのですから、当然ですよね。


【7】次は、ユーザー定義関数の戻り値のデータ型を、「String」(文字列型)に変更します。

excel-vba-46.gif

これまでは、Currency(通貨型)だったので、数値を返していましたが、今回は「円」という文字まで含めたいので、String(文字列型)にします。


【8】この段階で calcGankinF() を試すと、小数点以下まで表示されます。

excel-vba-47.gif

これは数値ではなく、文字列なので注意してください。

文字列型にしたことで、通貨型とは表示の仕方が変わったのです。


ここからが改良の本番です。

【9】戻り値を代入する部分を、以下のように変更します。

excel-vba-48.gif


calcGankinF = Format(gankin, "##,##0")


Format関数は既存の関数で、1番目の引数の値(または式)を、2番目の引数の書式にして、その文字列を返します。

つまり桁区切りされた数字が、戻り値になります。数字といっても文字列です。

正確には、「文字列を示すバリアント型(内部処理形式 String の Variant)の値」を返します。

また、ユーザー定義関数の中で、既存の関数を使用できることにも注目してください。


【10】この段階で calcGankinF() を試してみてください。

excel-vba-49.gif

桁区切りされていることがわかります。


【11】次は、プログラムに「円」まで含めてみましょう。

excel-vba-50.gif


calcGankinF = Format(gankin, "##,##0") & "円"


「&」(半角のアンパサンド)は、文字を連結する演算子です。

したがって、Format関数の戻り値の後に「円」が連結されます。

以下のように置き換えてイメージすると、わかりやすいです。

calcGankinF = 250,000 & "円"


このようにプログラミングでは、関数の戻り値を置き換えるイメージが大切です。


【12】それでは、最終的な動作を確認してみましょう。

excel-vba-51.gif

目的通りの結果を得ることができました。


【ワンポイント】
以下のようにプログラムを書けば、金額の前に「\」(円マーク)を付けることも可能です。

*「\」はWindowsでは円記号のことです。

calcGankinF = "\" & Format(gankin, "##,##0")


excel-vba-52.gif


【補講】
実は今回のような処理は、Excelのワークシート上で、セルの書式や計算式を使っても可能です。

だから「わざわざユーザー定義関数を作るまでもない」と感じるかもしれません。

でもユーザー定義関数なら、数百行〜数千行にもなる複雑な処理も可能なのです。

しかも今回のように、ユーザー定義関数をいくつか用意しておけば、関数名を換えるだけで、異なった処理を行ない、戻り値を変化させられます。

これはとても便利なことなのです。

スポンサードリンク






Excel VBA 初心者入門講座 TOPへ