Excelアドイン

Excelアドインは、Excelの起動時に読み込むことができるファイル(通常は.xlaまたは.xlam拡張子)です。このファイルには、通常は新しい関数の形式で、Excelに機能を追加するVBAコードが含まれています。

アドインは、Excelの能力を高める優れた方法を提供し、カスタム関数を配布するための理想的な手段です。 Excelには、ロードして使用を開始する準備ができたさまざまなアドインが付属しています。また、多くのサードパーティのアドインも利用できます。

この記事では、Excel VBAを使用してカスタム関数を作成する方法と、それをアドインとして保存およびインストールする方法について説明します。カスタム関数は、UDF(ユーザー定義関数)と呼ばれることがよくあります。

ユーザー定義関数の記述

アドインには、必要な数のUDF(ユーザー定義関数)を含めることができます。また、アドインファイルを開いて編集するだけで、最近追加することもできます。

ステップ1:新しいワークブックにコードモジュールを追加する

。 Excelを起動するか、Excelを既に開いている場合は、新しい空のブックを作成します。

。 [開発者]タブからVisualBasic Editorを開き、[開発者]タブに移動します。

。 Visual Basic(キー:ALT + F11)をクリックすると、Visual BasicEditorが開きます。

。 Visual Basic Editorで、[プロジェクトエクスプローラー]パネルの[VBAProject]を選択します。これにより、空のブックが選択されます。

プロジェクトエクスプローラーが表示されていない場合は、[表示]> [プロジェクトエクスプローラー]に移動して開きます。

。 [挿入]メニューから[モジュール]を選択します。これにより、選択したブックに新しい空のコードモジュールが追加されます。また、モジュールがプロジェクトエクスプローラーパネルに表示されます。

ArrowAddingModule

ステップ2:ユーザー定義関数のコードを入力します

コードウィンドウで、Age User DefinedFunctionのコードを入力します

ArrowAddingUDFCode

ステップ3:関数をテストする

すぐに試してみることができます。 Excelに切り替えて、空のブック(関数のコードモジュールの作成に使用しているものと同じ)で、セルに日付を入力します。別のセルに、Excelの組み込み関数の1つを使用するのと同じ方法で関数を入力します。 =年齢(A1)

ArrowTestingFunction

UDFは、ホストワークブック(UDFのコードモジュールを含むワークブック)が開いているときはいつでも、開いているすべてのワークブックで使用できます。ただし、ホストブックを閉じて別のブックで関数を使用しようとすると、エラーが発生します。他のワークブックは関数を見つけることができないので、#NAME?エラーが表示されます。

遭遇エラーを克服するには、Excelアドイン内でUDFを宣言し、ExcelアドインをExcelアプリケーションに割り当てる必要があります。

Excelアドインの作成

ブックをアドインとして保存する

コードモジュールを含むブックは、Excelアドイン(.xlaまたは.xlam)ファイルとして保存する必要があります。

Excelウィンドウで、[ファイル]> [保存]に移動して、[名前を付けて保存]ダイアログを開きます。アドインファイルの名前を入力し(通常のファイル命名規則が適用されます)、[ファイルの種類:]オプションを使用して、ファイルの種類をMicrosoft Excelアドイン(.xla)または(.xlam)に変更します。

[OK]をクリックする前に、アドインファイルを保存する場所を確認してください。

最後に[OK]をクリックして変更を受け入れます。これでアドインをインストールする準備が整い、必要に応じて他のユーザーに配布できます。

ArrowSavingAddin

アドインのインストール

[ツール]> [アドイン]に移動して、[アドイン]ダイアログを開きます。アドインをデフォルトの場所に保存している場合は、その名前が[使用可能なアドイン:]ウィンドウに表示されます(アドインを別のフォルダーに保存している場合は、[参照]ボタンを使用して検索します)。 )。

アドインをインストールするには、アドインの名前の横にあるチェックボックスにチェックを入れて、[OK]をクリックします。

ArrowInstallingAddin

アドインがインストールされるとすぐに、その機能がExcelで使用できるようになります。関数ウィザード(関数の貼り付けツール)の[ユーザー定義]セクションでそれらを見つけるか、組み込み関数と同じようにセルに入力します。 [アドイン]ダイアログに戻り、チェックボックスからチェックマークを外してアンインストールするまで、アドインはインストールされたままになります。

UDFの追加とアドインへの変更

アドインファイルには、必要な数のモジュールとカスタム関数を含めることができます。いつでも追加できます。

アドインがインストールされている場合は、VBエディターのプロジェクトエクスプローラーパネルに一覧表示されます。関数を含むモジュールを見つけて、必要な追加や変更を行います。アドインがインストールされていない場合は、アドインファイルを見つけてダブルクリックし、Excelで開きます。 Excelウィンドウには表示されませんが、VBエディターのプロジェクトエクスプローラーには表示されます。

変更を保存することを忘れないでください!これは、[ファイル]> [保存]を使用してVBエディターウィンドウから実行します。

コードについては以下に従ってください

'Insert below code in Addin

Option Explicit



Function Age(DoB As Date)

'Gives a name to the function and declares that a single argument is needed, which must be a date.

'Checking whether Date of Birth is zero

If DoB = 0 Then

Age = "type the correct Date of Birth"

Else

'If Date of Birth is not zero, compare the current month value with the Date of Birth

Select Case Month(Date)

'If current month is before (i.e. less than) the month of date of birth,

'then they have not had their birthday, so their age is this year minus their birth year minus 1

Case Is < Month(DoB)

Age = (Year(Date) - Year(DoB)) - 1

'If current month is same as the month of date of birth

'we need to know whether or not they have had their birthday yet

Case Is = Month(DoB)

'If today date is equal to or past the day of their birthday,

'then they have had their birthday (or it is today)

'so their age is this year minus their birth year?

'otherwise their age is this year minus their birth year minus 1

If Day(Date) >= Day(DoB) Then

Age = Year(Date) - Year(DoB)

Else

Age = Year(Date) - Year(DoB) - 1

End If

'If today?s month is after (i.e. greater than) the month of the person?s date of birth,

'they have had their birthday, so their age is this year minus their birth year.

Case Is > Month(DoB)

Age = Year(Date) - Year(DoB)

'Close the CASE statement

End Select

'Close the IF statement

End If



'Close the Function

End Function

このブログが気に入ったら、FacebookやFacebookで友達と共有してください。

皆様からのご意見をお待ちしております。私たちの仕事を改善し、あなたのために改善する方法をお知らせください。 [email protected]までご連絡ください