本文へスキップ

別館:エクセルQC館 別館:エクセル株式館

  1. トップページ>
  2. Tips>
  3. Excel2010、ユーザー定義関数の作成方法

Tipstips

備忘録として、主にパソコン関係のTipsを記載して行きます。


新着情報
@UiPath、メモ
AOffice365、Excel:VBAで画面更新がチラツク時の対策
BOffice365、Excel:勝手に手動計算になる原因
COffice365、Excel:フィルターで3つ以上の条件にする方法
DOffice365、Excel:シート同士の違いを見つける方法

Excel2010、ユーザー定義関数の作成方法

Excel2010は、手頃な価格で高機能な表計算ソフトです。
多くの関数が標準装備され、色々な計算に使用する事が可能です。

しかし、標準の関数だけでは十分でない場合が有ります。
幸いにもユーザー定義関数を作成する事が可能で、自分で関数を幾つでも作れます。
使用したパソコンは、下記のソフトを使用していました。

OS       : Windows7(64bit)
表計算ソフト   : Excel2010(32bit)

以下、Excel2010、ユーザー定義関数の作成方法を記載して行きます。

(項目1)
 ・ユーザー定義関数の作成方法は、下記の手順で行います。
  ユーザー定義関数      (Functionプロシージャー)
  ユーザー定義関数の説明を登録(Application.MacroOptions)
 ・Spreadsheet Page Excel Tips: User-Defined Function Argument Descriptions In Excel 2010を参考に、
  本ページを作成しております。

(項目2)
 ・ユーザー定義関数は、Functionプロシージャーで作成します。
 ・本事例では、工程能力指数Cpの関数で説明します。
 ・Functionプロシージャーでは、引数を渡し、戻り値を受け取ります。
  引数 : LSL, USL, sigma
  戻り値: Cp これは、(USL - LSL) / (6 * sigma)の計算結果です。
 ・ソースコードは、以下の通りです。
  'ユーザー定義関数
  Function Cp(LSL, USL, sigma) As Double
    Cp = (USL - LSL) / (6 * sigma)
  End Function

(項目3)
 ・複数の関数を作成すると、その内容が分からなくなる場合が有ります。この様な場合は、関数の説明を登録
  すると良いでしょう。
 ・ユーザー定義関数の説明を登録は、Application.MacroOptionsで行います。
 ・説明には、以下を記載できます。
  関数の概要 : Description
  関数の分類 : Category
  各パラメータ: ArgumentDescriptions
 ・ArgumentDescriptionsは、Excel2010で追加された新機能です。
 ・残念ながら、入力時に出るポップアップの機能は無い様です。
 ・下記のマクロは、何処かで実行する必要が有ります。ファイルを開いた時に自動実行する様にすると良いと
  思われます。
 ・マクロ実行前
  

 ・マクロ実行後
  

 ・ソースコードは、以下の通りです。
  'ユーザー定義関数の説明を登録
  Sub Cp_touroku()

  Dim FuncName As String
  Dim FuncDesc As String
  Dim Category As String
  Dim ArgDesc(1 To 3) As String

  FuncName = "Cp"
  FuncDesc = "Cpは工程能力指数です。"
  Category = 4 '統計
  ArgDesc(1) = "下限規格値です。"
  ArgDesc(2) = "上限規格値です。"
  ArgDesc(3) = "標準偏差です。"

  Application.MacroOptions _
    Macro:=FuncName, _
    Description:=FuncDesc, _
    Category:=Category, _
    ArgumentDescriptions:=ArgDesc

  End Sub

(項目4)
 ・上記のマクロを実行すると、ファイルに情報が残ってしまいます。
 ・ユーザー定義関数の説明を解除は、Application.MacroOptionsで行います。
 ・ソースコードは、以下の通りです。
  'ユーザー定義関数の説明を解除
  Sub Cp_kaijo()

  Dim FuncName As String
  Dim FuncDesc As String
  Dim Category As String
  Dim ArgDesc(1 To 3) As String

  FuncName = "Cp"
  FuncDesc = ""
  Category = ""
  ArgDesc(1) = ""
  ArgDesc(2) = ""
  ArgDesc(3) = ""

  Application.MacroOptions _
    Macro:=FuncName, _
    Description:=FuncDesc, _
    Category:=Category, _
    ArgumentDescriptions:=ArgDesc

  End Sub

(項目5)
 ・全部のソースコードは、下記の通りです。
  Option Explicit

  'ユーザー定義関数
  Function Cp(LSL, USL, sigma) As Double
    Cp = (USL - LSL) / (6 * sigma)
  End Function

  'ユーザー定義関数の説明を登録
  Sub Cp_touroku()

  Dim FuncName As String
  Dim FuncDesc As String
  Dim Category As String
  Dim ArgDesc(1 To 3) As String

  FuncName = "Cp"
  FuncDesc = "Cpは工程能力指数です。"
  Category = 4 '統計
  ArgDesc(1) = "下限規格値です。"
  ArgDesc(2) = "上限規格値です。"
  ArgDesc(3) = "標準偏差です。"

  Application.MacroOptions _
    Macro:=FuncName, _
    Description:=FuncDesc, _
    Category:=Category, _
    ArgumentDescriptions:=ArgDesc

  End Sub

  'ユーザー定義関数の説明を解除
  Sub Cp_kaijo()

  Dim FuncName As String
  Dim FuncDesc As String
  Dim Category As String
  Dim ArgDesc(1 To 3) As String

  FuncName = "Cp"
  FuncDesc = ""
  Category = ""
  ArgDesc(1) = ""
  ArgDesc(2) = ""
  ArgDesc(3) = ""

  Application.MacroOptions _
    Macro:=FuncName, _
    Description:=FuncDesc, _
    Category:=Category, _
    ArgumentDescriptions:=ArgDesc

  End Sub

(項目6)
 ・以上で、Excel2010、ユーザー定義関数の作成方法は終了です。



contents

エクセル将棋館

日本国

地方都市


スポンサード リンク