引数名の関数を実行したいのですが、どうすればいいでしょうか?
【やりたいイメージ】
Function 関数選択(関数)
関数選択 = 関数() ← 引数の関数が"z"の場合、"Function z()"を呼びたい
End Function
--------------------
呼び出す関数
--------------------
Function a()
a = "a"
End Function
~
Function z()
z = "z"
End Function
--------------------------
"Function 関数選択(関数)"の中で、ifやswich すればできると思うのですが、ずらずら書くのもうっとおしいのでスマートにしたいと思っています。
call がいいと思ったのですが、戻り値がかえせません。
何かいい方法はないでしょうか?
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
No2 です。
>関数選択 = Eval(関数 & "()")
>
> を、関数選択 = Eval(関数 & "(" & 引数 & ")")
引数のデータ型が数値なら、これで OKです。
テキスト型なら
Public Function 関数選択(関数 As String, 引数 As Variant) As Variant
関数選択 = Eval(関数 & "('" & 引数 & "')")
End Function
返値の型とか、引数に NULL値が存在するかなど
はっきりしない部分があるので
ザックリとした回答になりますが。
シンプルでわかりやすい回答をありがとうございます。
関数選択 = Eval(関数 & "('" & 引数 & "')")
の
"('" & 引数 & "')")
のところの「’」ですが、
何で、ここに登場するの?
って疑問が浮かびましたが、試してみるとうまくいきました。
とりあえず
「世の中の仕組みは、こんなものだ~」
と納得しています。
ありがとうございました。
No.4
- 回答日時:
a-z_A-Zさん
引数が文字なのか数値なのか分かりませんが、Variant(無指定)の場合で
説明いたします。
・引数が数値の場合はそのまま値を渡せば良いです。
答え= 関数選択("z",100)
・引数が文字のの場合は"を付けて渡す必要があります。
注)VBの場合文字列に"を付ける場合は"を2つ続ける必要があります。
答え= 関数選択("a","""X""")
もし"を付けないで引数を渡した場合は
答え= 関数選択("a","X")
↓
答え= A(X)と同様な関数
なので変数Xの指定がないのでエラーになるかと思います。
Function 関数選択(関数 As String, 引数)
関数選択 = Eval(関数 & "(" & 引数 & ")")
End Function
Function a(引数)
a = "a" & 引数
End Function
Function z(引数)
z = "z" & 引数
End Function
ご確認ください。
ありがとうございます。
>注)VBの場合文字列に"を付ける場合は"を2つ続ける必要があります。
実は、追加の質問をした後に、いろいろと試してみました。
ダブルクォーテーションを増やしたり減らしたりと・・・
しかし、まさか3つも続けるとは思いませんでした。
いろいろと試した結果、引き数はあきらめ、引き数の値を返す関数をつくり、
その名前を入れると、とりあえずやりたいことが出来ました。
でも、改めてこのやり方で試してみたいと思います。
ありがとうございました。
No.3
- 回答日時:
NO1です、
すみません、AccessとEXCELのマクロ(VBA)関数は同じだと思っていました。
AccessはEvaluateではなくEvalのようです。
よって次のようになります。
答え = Eval("a()")
答え = Eval("z()")
または
答え=関数選択("a")
答え=関数選択("Z")
Function 関数選択(関数 as String)
関数選択 = Eval(関数 & "()")
End Function
Function a()
a = "a"
End Function
Function z()
z = "z"
End Function
ご確認ください。
ありがとうございます。
これで解決!
と思ったのですが、呼び出す関数に引数が必要となりました。
>関数選択 = Eval(関数 & "()")
を、関数選択 = Eval(関数 & "(" & 引数 & ")")
とかやっているのですが、うまくいきません。
引数のある関数は無理なのでしょうか?
No.2
- 回答日時:
ありがとうございます。
Eval 関数でいいみたいですが、さらに続きがあります。
その呼び出す関数に、引数があります。
引数がある場合が、うまくいきません。
どうすればいいのでしょうか?
No.1
- 回答日時:
a-z_A-Zさん
はじめまして。
Evaluateを使用すればできるかと思います。
答え = Evaluate("a()")
答え = Evaluate("z()")
または
答え=関数選択("a")
答え=関数選択("b")
Function 関数選択(関数 as String)
関数選択 = Evaluate(関数 & "()")
End Function
Function a()
a = "a"
End Function
Function z()
z = "z"
End Function
ありがとうございます。
とてもかわいい猫ですね~
猫好きの私としてはたまりません。
おっと、猫ではなくEvaluateですが、
subまたはfunctionが定義されていません。
ってでました。
何かライブラリの読み込みが必要なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) excel2013 色付きセルの値合計 3 2023/02/28 11:48
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- Excel(エクセル) ユーザー関数の自動計算(excel2003) 1 2023/02/06 06:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルである行以下全部を削...
-
EXCEL VBAで全選択範囲の解除
-
VBAでファイルを開くときにファ...
-
Excel VBA あるセルでENTERを押...
-
「これが」「これで」いいです...
-
Excel 行列が選択出来ない
-
Jw-cadの範囲指定で文字が選択...
-
「無」と「未」の使い方
-
ipadのpagesでMS明朝を使う方法...
-
Androidのスマホで毎回毎回ホー...
-
戸惑う、惑うの違いはなんですか。
-
Wordでドロップダウンリスト連動
-
ListViewの選択、選択解除を行...
-
リストボックスのプロパティ「...
-
シフトキーを使った範囲選択が...
-
大至急!
-
Google Earth Pro(グーグルア...
-
マクロでリンクを更新しないで開く
-
Excel2003にて(ツール→オプシ...
-
EXCELピボットテーブル(複数ア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルである行以下全部を削...
-
EXCEL VBAで全選択範囲の解除
-
VBAでファイルを開くときにファ...
-
Excel VBA あるセルでENTERを押...
-
Androidのスマホで毎回毎回ホー...
-
「無」と「未」の使い方
-
Jw-cadの範囲指定で文字が選択...
-
ipadのpagesでMS明朝を使う方法...
-
Simejiで作ったきせかえを消す...
-
Excel 行列が選択出来ない
-
Excel VBAでn行毎に行の選択
-
Google Earth Pro(グーグルア...
-
「これが」「これで」いいです...
-
Excel2003にて(ツール→オプシ...
-
シフトキーを使った範囲選択が...
-
大至急!
-
仕事行きたくありません どうす...
-
ピボットテーブル 矢印が出な...
-
戸惑う、惑うの違いはなんですか。
-
Word差込印刷で「テーブルを選...
おすすめ情報