Excelユーザー定義関数入力方法とは?

このQ&Aのポイント
  • Excelでユーザー定義関数を使う方法を説明します。
  • ユーザー定義関数は、関数を作成したファイルでないと直接入力できません。
  • マクロファイルにユーザー定義関数を作成すると、そのファイルでは関数が候補として表示されます。
回答を見る
  • ベストアンサー

Excel ユーザー定義関数入力方法

ユーザー定義関数はその関数を作ったファイルでないと セルに直接入力しても関数は出ないのですか 例えば Book1.xlsxとmacro.xlsmというファイルがあります。 macro.xlsmファイルにユーザー定義関数を作成しました。 macro.xlsmだとセルに直接入力しても作成した関数が候補が出ます。 Book1.xlsxだと関数の挿入から見つけないといけません。 macro.xlsmのファイルのThisWorkbookには Private Sub Workbook_Open() Application.MacroOptions _ Macro:="aaa", _ Description:="説明" End Sub と入ってます。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8508/19344)
回答No.1

他ファイルの関数の呼び出し時は、候補表示や自動選択は出来ないので、以下のように、セルに「ファイル名付き」で直接入力して下さい。 =macro.xlsm!MyFunc(A1,B1) 参照するファイルのファイル名に半角スペースや特殊文字を含む場合や、参照するファイルが異なるフォルダに存在してパス付きで指定する場合は、以下のように「'」でファイル名を括って下さい。 ='C:\Users\User Name\Documents\macro.xlsm'!MyFunc(A1,B1) 因みに、参照先のファイルを開いてないと、式の結果が「#NAME?」になるので、式の入力時は参照先のファイルをオープンしていないといけません。

meronsodanomu
質問者

お礼

やっぱり出来ないのですか。 今後出来る様になれば便利だなと思います。 ありがとうございます。

その他の回答 (1)

  • m_and_dmp
  • ベストアンサー率54% (974/1797)
回答No.2

VBE を開くと、VBA Project(Personal.xls) というプロジェクトがトップに表示されていると思います。 ここに、標準モジュールを追加して、作成したマクロコードをコピーしておけば、Book1 以外のブックを開いた時も関数名だけで使用できると思います。 Personal.xls は、Excel 2003 の場合、2007 以降は、Personal.xlsb になっていると思います。

meronsodanomu
質問者

お礼

回答ありがとうございます。 Personal.xlsb で保存してもできませんでした。

関連するQ&A

  • エクセルのユーザー定義関数呼び出し方法

    エクセルでユーザー定義関数を作成し personal.xls に登録しておいても,関数名だけでは#NAME?エラーとなり呼び出せません.personal.xls!関数名() と入力すれば呼び出せますが,スマートではありません.作成した関数を複数のブックから使いたい場合,関数名だけで呼び出せる方法がないでしょうか.

  • Excelでユーザー定義関数が#NAMEと返される

    EXCELでユーザー定義関数を使用しています。 作成時は問題なく動いていたものの、保存後一度閉じたものを再度開いて数式を更新させると「#NAME」と表示されるエラーが出てしまいます。 関数は標準モジュールで定義しています。 ファイルは.xlsxで作成後、.xlmxにして保存しています。 解決方法をご存じの方がいましたら、ご教授いただければ幸いです。

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • Excelユーザー定義関数が書き込まれているセルアドレス

    Excelのユーザー定義関数で、自分自身が書き込まれているセルのアドレスって取得出来るのでしょうか? 例えば、 Function test(MyString As String) As String test = "入力された文字は、「" & MyString & "」です" End Function とユーザー定義関数を作り A1のセルに =test("てすと") と書くと 入力された文字は、「てすと」ですと出てきます。 そこで、ユーザー定義関数のなかで、ユーザー定義関数を呼び出した式が入力されている(上記の例ですと、「A1」)アドレスを取得する方法ってありますか? どなたか、詳しい方いらっしゃいましたら教えてください。

  • エクセル ユーザー定義関数がリアルタイムに機能しない

    次のような仕様のユーザー定義関数を作りましたが、関数入力直後しか、働いてくれません。リアルタイムに動くようにするには、どんな仕掛けを作成したら良いのか分かりません。 A1:A10の範囲にA1からA10に向かって、任意のセルにデータを入力します。この範囲の最下段に入力された情報を表示させるユーザー定義関数です。 このロジックは正しく機能しているのですが、範囲内の情報を入れ替えても、反応しません。再度、定義関数を入力すると、正しい結果を表示する状態です。

  • ユーザー定義関数が入力されたセルを調べたい

    Excel でユーザー定義関数を作成し、アドインにして仕事で使っています。 これらの関数を使用したブックを外部に配布する時にユーザー定義関数を値に変換してから配布したいのですが、ユーザー定義関数とワークシート関数の区別の方法が判りません(外部にアドインは配布しません)。 Dim r As Range Dim f As String For Each r In Activesheet.UsedRange If r.HasFormula Then f = r.Formula Do ' f がユーザー定義関数の一覧の中に見つかれば、セル r の色を変えてループ脱出 Loop End If Next という方法を試みましたが、UsedRange の大きさやユーザー定義関数の数が多いことも影響して結構な時間が掛かってしまいます。 ユーザー定義関数とワークシート関数を区別する方法があれば、Do~Loop を回さなくて済むので、時間短縮できるのではないかと考えています。 よろしくお願いします。

  • エクセルユーザー定義関数(1)

    エクセル初心者です。 複数のセル範囲(例えばRange("A1:A100"))を入力させ、入力されたセル範囲すべてのセルを3乗した総和を求めるユーザー定義関数は作ること可能でしょうか? Function Y(a As Range) As Variant ここに、aで選択されたセル全てを3乗して総和を求める関数Yを定義したい。 End Function よろしくお願い致します。

  • エクセル2007のユーザー定義について教えてください。

    エクセル2007のユーザー定義について教えてください。 A1のセルにX001のようなコードが入力されている場合,RIGHT関数を使って右端の1を抽出し,この1に「日目」などの文字を結合して「1日目」と表示したいですがセルのユーザー定義で可能でしょうか。=RIGHT(A1,1)&"日目"のようにやればできますが,セルのユーザー定義でやりたいと思っています。

  • ユーザー定義関数に自前のヘルプを表示

    ユーザー定義関数に自前のヘルプを表示したいと思い 以下のコードを考えてPERSONAL.XLBのMODULEに記載しましたが 「構文エラー」となります。 Sub HELP_TEXTSPLIT() Application.MacroOptions Macro:="TEXTSPLIT", _ Description:="2021スピル対応" & vbCrLf & _ "365では可能なdelimiterの配列指定は未対応" & vbCrLf & _ "365の第5引数以降の「一致モード」,「代替文字」には未対応" & vbCrLf & _ "空欄を無視する ---> True or False", _ Category:="ユーザー定義", _ ArgumentDescriptions:=Array("引数 1 : 文字列", "引数 2 : 文字列","引数 3 : 文字列".) End Sub どのように修正すれば良いですか ? ’-----------------Office 2021 を利用

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

専門家に質問してみよう