web-dev-qa-db-ja.com

ExcelVBAでカスタムワークシート関数を作成する

私は、VBA関数を使用してExcelで値を計算できるというかすかな記憶があります(セルの数式として)。

=MyCustomFunction(A3)

これはできますか?

編集:

これは私のVBA関数の署名です:

Public Function MyCustomFunction(str As String) As String

この関数はThisWorkbookモジュールにあります。上記のようにワークシートで使用しようとすると、#NAME?エラー。


解決策(ありがとう、codeape):ThisWorkbookモジュールで定義されている場合、関数にアクセスできません。手動でワークブックに追加された「適切な」モジュールに含まれている必要があります。

13
Tomalak

はい、できます。モジュールでVBA関数を定義するだけです。例を含む素晴らしい紹介については、 http://www.vertex42.com/ExcelArticles/user-defined-functions.html を参照してください。

簡単な例を次に示します。

  • 新しいブックを作成する
  • VBAビューに切り替えます(Alt-F11)
  • モジュールを挿入します。モジュール
  • モジュールの内容:
 Option Explicit 
 
 Function MyCustomFunction(input)
 MyCustomFunction = 42 + input 
 End Function 
  • ワークシート(Alt-F11)に戻り、いくつかの値を入力します。
 A1:2 
 A2:= MyCustomFunction(A1)
20
codeape

Word入力は基本的なキーワードであるため、置き換える必要があります。代わりにnumを試してください。バリアントなどのタイプを指定して、さらに先に進むこともできます。

Function MyCustomFunction(num As Variant)
    MyCustomFunction = 42 + num
End Function
4
TMD