当サイトではアフィリエイト広告を利用しています

Excel VBAで関数をマスター!ユーザー定義関数の作り方

インフラ担当パソコン
スポンサーリンク

Excel VBAを使って、自分だけの関数を作りたいと思ったことはありませんか?

こんな関数があったら便利なのに…。

ホームページ・インフラ担当が副業やるってよ!
こんにちは!uri uri(@Uriuri_writer)です。Excel VBAを使って自分のオリジナル関数を作ってみたいと思いませんか?この記事では、Excel VBAでの関数の作り方を詳しく解説します。初心者から上級者まで、必ず役立つ情報が満載です。

当サイトでは、他にもExcelで業務効率・作業効率を上げる記事を投稿しています。興味があればそちらも合わせてご覧いただけると幸いです。

Excelで秒を時刻に変換!3つの方法で簡単解説
Excelで秒数を時間形式に変換したいと思ったことはありますか? この記事では、Excelで秒を時間に変換する方法を簡単に知ることができます。秒を時間に変換する方法を知っておくことで、データ分析や日常業務がさらに効率的になります。 Exce...
Excelで行を固定!効率的な作業方法をマスターしよう
Excelでの作業が多い方にとって、行を固定する機能は非常に便利です。 この記事では、Excelで行を固定する方法を詳しく解説します。最後まで見ていただければExcel初心者から上級者、パソコンが詳しくないおばあちゃんまで、誰でも簡単に行を...

それではいってみましょー。

スポンサーリンク

ユーザー定義関数の基本

Excel VBAには、値を返さないSubプロシージャと、値を返すFunctionプロシージャがあります。値を返すFunctionプロシージャをユーザー定義関数と呼びます。

例えば、「=Func1(123)」のようにセルに入力することで、SUM関数などと同じように使うことができます。

SUM関数だと「=SUM(A1:A100)」のように使えばA1セルからA100の合計を指定したセルに出すことができますよね?

それと同じで「=Func1(123)」もSUM関数と同じ機能をするVBAコードを作成すれば同じことが可能です。

また、ExcelのVBAでユーザー定義関数を作る基本的な手順は下記のとおりになります。

  1. Excelを開き、VBAエディタを起動します。
  2. 「挿入」メニューから「モジュール」を選択して、新しいモジュールを追加します。
  3. 新しいモジュールのコードウィンドウにコードを書きます。
  4. VBAエディタを閉じ、Excelのシートに戻ります。

ExcelでVBAエディタを起動ショートカットキーは「Windowsの場合: Alt + F11 キーを同時押し。」「Macの場合: Fn + Option + F11 キーを同時に押し。」なので覚えておくと作業が早くなりますよ。

引数の取り扱い

ユーザー定義関数で大切になるのが「引数」をどうするかです。

はい!引数って言われてもよくわかりませんよね?

ちょっと具体的なVBAコードを使って解説しますね。

'aとbを足す関数
Function myFunction(a As Integer, b As Integer) As Integer
myFunction = a + b
End Function

上記のコードは、引数aとbをシンプルに足し算して返すものです。引数とは、関数名の後ろに括弧で囲んで指定する関数に渡す値のことです。上記で作った独自関数である、「myFunction」を実際に使う時は、myFunction(1, 2)と使います。a=1、b=2が代入されて数字の3が答えとして返ってきます。

どんな関数を作るのかは、この引数の取り扱いを具体的にどうするのかということが非常に重要になってきます。

じゃあ具体的に引数をどのように設定し取り扱っていけばいいのかについては以下の4つの観点を抑えておく必要があります。

  • 数字を引数として受け取る。
  • セルまたはセル範囲を引数として受け取る。
  • 引数の数が不定の場合。
  • 省略可能な引数。

それでは1つ1つ詳しく説明したいと思います。

数字を引数として受け取る

数値型を指定して引数を受け取るように関数を設定することができます。

数字を引数として受け取る場合は、関数の引数に変数を指定し、その変数に数字を代入します。例えば、以下のようになります。

'2倍にするコード
Function myFunction(number As Integer) As Integer
myFunction = number * 2
End Function

セルまたはセル範囲を引数として受け取る

セルまたはセル範囲を引数として受け取る場合は、関数の引数にRangeオブジェクトを指定します。例えば、以下のようになります。

'セルの個数を数える関数
Function myFunction(rng As Range) As Integer
myFunction = rng.Cells.Count
End Function

rngという部分が、Excelの範囲を示すRangeオブジェクトになります。

引数の数が不定の場合

引数の数が不定の場合は、ParamArrayキーワードを使用します。例えば、以下のようになります。

'指定されたすべての数値の合計を出す関数
Function myFunction(ParamArray args() As Variant) As Integer
Dim i As Integer
For i = LBound(args) To UBound(args)
myFunction = myFunction + args(i)
Next i
End Function

ParamArray args()という部分で(可変長の引数)複数の数値を指定できます。

ちなみに、上記の関数は、「1, 2, 3, 4」という4つの数値を渡した場合、これらの数値の合計である10を出してくれるコードです。

省略可能な引数

Optionalキーワードを付けて省略可能にします。省略された場合の対応には、初期値を設定する方法と、省略されたかどうかを判定する方法があります。例えば、以下のようになります。

'文字列をくっつける(連結)関数
Function myFunction(Optional arg1 As Integer = 0, Optional arg2 As String = "") As String
myFunction = arg1 & arg2
End Function

ちなみに上記の関数に「Pen-Pineapple」と「-Apple-Pen」という2つの引数を渡した場合、これらの引数を連結した「Pen-Pineapple-Apple-Pen」という文字列を返します。

便利なVBAの独自関数コード例

VBAでユーザー定義関数を作ると業務に便利な関数を作ることができます。

別の記事で、実際に作ってみた関数を紹介していますので、業務効率化したい方はぜひご覧ください。

Excel VBAで関数を作る!文字列を逆順にする関数を作ってみた
今日はExcel VBAを使って、文字列を逆順にするユーザー定義関数を一緒に作成してみましょう。この関数は、文字列の処理や解析を行う際に非常に役立ちます。 こんな関数があったら便利なのに…。 こんにちは!uri uri(@Uriuri_wr...
Excel VBAで関数を作る!特定の日付が週末かどうかを判定する関数を作ってみた
Excelで、特定の日付が週末かどうかを判定できる方法があったら便利ですよね? こんな関数があったら便利なのに…。 こんにちは!uri uri(@Uriuri_writer)です。今日は、特定の日付が週末(土曜日や日曜日)かどうかを判定する...
Excel VBAで関数を作る!セルの背景色を取得する関数を作ってみた
Excel VBAを使って、塗りつぶしているセルの背景色を取得したいと思いませんか? いちいち1つ1つ確認すんの面倒だから関数があったら便利なのに…。 こんにちは!uri uri(@Uriuri_writer)です。Excel愛好者の皆さん...

ユーザー定義関数ではできないこと

Excel VBAのユーザー定義関数は非常に便利で、多くのカスタム計算や操作を実行することができますが、ユーザー定義関数では、セルの挿入/削除、他セルの値の変更、アクティブセルや選択範囲の変更、シートの挿入/削除や名前の変更、Excelの設定の変更などの動作はできません。

別の記事でもっとわかりやすく解説していますのでそちらもあわせてご覧ください。

【疑問解決】Excel VBAのユーザー定義関数ではできないことってなに?
Excel VBAを学ぶと、自分だけの関数を作成することができるようになります。これを「ユーザー定義関数」と呼びます。しかし、このユーザー定義関数には、できることとできないことがあります。今回は、その「できないこと」に焦点を当てて、初心者の...

まとめ

Excel VBAでのユーザー定義関数の作り方について解説しました。関数の基本から引数の取り扱い、制限事項まで、幅広く学ぶことができました。

簡単まとめ

  • ユーザー定義関数の作り方と基本的な設定方法について解説しました。
  • 引数の取り扱い方について解説しました。
  • 関数作成の際の制限事項をさらっと解説しました。

Excel VBAを使った関数作成は、データ処理を効率化する強力なツールです。ぜひ、今回学んだ知識を活用して、自分だけの関数を作ってみてください。

この記事を気に入っていただけたら、コメントやシェアをしていただけるととても励みになります!これからも、パソコンの作業効率を上げる方法やパソコンのちょっとした疑問や困ったを解決情報を発信していきますので、たまにサイトをチェックしていただけると、とっても嬉しいです(‘ω’)ノ。

SNSのフォローボタンを、ポチってくれるとめっちゃ嬉しいです👍

ではでは、最後までご覧いただきありがとうございました。

ホームページ・インフラ担当が副業やるってよ!

Twitter:@Uriuri_writer

Instagram:@uriuri_writer
Instagram

コメント

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