- ベストアンサー
access vbaで引数によって、関数を変えたい
jcctairaの回答
- jcctaira
- ベストアンサー率58% (119/204)
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 ご確認ください。
関連するQ&A
- 引数のある関数と引数のない関数の設定
お世話になっております。 PHPのプログラミングで関数をつくる際に、引数を渡す関数と引数がない関数がありますが、すでに定義済みの関数のように、引数がある場合と引数がない場合の両方を取り扱うにはどうしたらよいでしょうか? function example ($a) { if ($a == 0 || $a == '') { print '引数なし'; } else { print $a; } } のような関数で、 example(); という感じで引数を入れないと、 Warning: Missing argument … というエラーがでてしまいます。関数を example(''); と呼び出すと大丈夫なのですが。。。 プログラマーにとって基本的なことだと思うのですが、調べてもなかなか出てこないので質問させて頂きました。どなたかわかる方がいたらしたらおしえてください。 よろしくお願いします! }
- ベストアンサー
- PHP
- fortran90 引数で渡された関数の呼び出し
fortran90を始めて間もない者です。 メインプログラムより呼び出しているサブルーチンにユーザ関数を渡しています。 このサブルーチンを自前で作成するのが目的です。 引数で受け取った関数を、自前の別関数より呼び出すにはどうしたら良いでしょうか。 Cであれば関数のポインタをグローバルな変数にセットしてやれば可能だと思いますが・・・ !-------------------------------- subroutine sub(func1, a) real::a interface real function func1(x) real::x end function func1 real function func2(x) real x end function func2 end interface call sub2(func2, a) write(*,*) a return end subroutine sub !-------------------------------- real function func2(x) real::func2, x ! ここでfunc1を呼び出したい ! func2=func1(x) end function func2 !-------------------------------- subroutine sub2(funca, a) real::a interface real function funca(x) real::x end function funca end interface a=funca(10.) return end !-------------------------------- program main external func real a call sub(func, a) write(*,*) a end program !-------------------------------- function func(x) real func, x func=2.*x*x end function func
- 締切済み
- その他(プログラミング・開発)
- VBAでJavaのように関数の引数に関数を渡す方法
やりたいことは、テキストファイルを読み込んで「一行ずつ何か処理」をさせたいです。 この、「一行ずつ何か処理」の部分を引数に渡し、関数の中身で「ファイルを1行ずつ読み込む」部分を実装する方法はないでしょうか。 <イメージ> Function ReadFile(path As String, eachFunc As Fcuntion) Set fso = CreateObject("Scripting.FileSystemObject") Set tso = fso.OpenTextFile(path) Do Until tso.AtEndOfStream Call eachFunc(tso.ReadLine) Loop End Function 予め一行ずつ読み込む処理を作っておきモジュールとして使いたいです。 よろしくお願いします。
- 締切済み
- Excel(エクセル)
- JSの高階関数とは?
高階関数とは? 「関数を引数、戻り値として扱う関数」のことを高階関数と呼びます。 と聞いたのですが、関数が他の関数の引数として、ないしは戻り値とし使われている場合その引数、戻り値の関数のことを高階関数というのでしょうか? するとコールバック関数は引数として関数を使う場合のようですが、半分被りますよね?
- 締切済み
- JavaScript
- Excel:メニューから関数に飛ぶ際に引数を持たせる
Excel2003でマクロを組んでいます。 ThisWorkbookにて、 With Menu1 .Controls.add Type:=msoControlButton With .Controls(1) .Caption = "手順1" .OnAction = "Jikkou" End With End With のように記述し、Menu1というオリジナルのメニューの中に、 「手順1」というメニューを表示させ、これを実行すると関数"Jikkou"が動くようにしました。 このJikkouという関数に、引数を持って行きたいのですが、 どのように記述すればよいでしょうか。 具体的には、異なるメニューを実行して同じ関数へ移動する際、 「どのメニューを選択してきたのか」によって、Jikkouの中で処理を分岐させたいのです。 引数を持たせられたら解決しそうだと思って質問しています。 他に何か方法があれば(例えば、それよりこちらの方が自然だ、のような方法があれば)教えていただきたいです。 以下、引数の持たせ方がわからず詰まった、自分の考えたコードです(勿論動きません)。 目的が伝われば幸いです。 ---▼ThisWorkbookの一部--------------------------- With Menu1 .Controls.add Type:=msoControlButton With .Controls(1) .Caption = "手順1" a = 0 .OnAction = "Jikkou a" End With End With With Menu1 .Controls.add Type:=msoControlButton With .Controls(2) .Caption = "手順2" a = 1 .OnAction = "Jikkou a" End With End With ---▼関数Jikkou------------------------------------ Sub Jikkou(byVal a as integer) if a = 0 then msgbox "手順1から来た" elseif a = 1 then msgbox "手順2から来た" end if End Sub
- ベストアンサー
- オフィス系ソフト
- OpenOffice Basicで引数を2つ利用する関数が作れません
OpenOffice Basicで引数を2つ利用する関数が作れません Open Office Calc 3.1.1を使っています。 できれば複数(3つ以上)引数を取る関数を作りたいのですが、 2つ引数を取ろうとすると演算結果が#NAME?になってしまいます。 切り分けにシンプルな関数を作ってみました。 以下で=test2(3,5)とすると結果が#NAME?になります。 Function test2(arg1 As Integer, arg2 As Integer) as Integer test2 = 3 + arg2 End Function #なお、関数内の演算内容はtest2 = arg1 + arg2でも変わらず#NAME?です 切り分けで以下を作ると=test3(3)で6が返されます Function test3(arg1 As Integer) as Integer test3 = 3 + arg1 End Function 関数名のタイプミスの可能性を排除するために、 test2関数を名前を換えずに引数の数を1つに変更してみると 計算できるのでタイプミスではないと思います。 やはり引数を複数とる取り方に問題があるように見えます。 お手数ですが何かアドバイスいただけないでしょうか?
- ベストアンサー
- オフィス系ソフト
- 関数の引数の型と引数名を取得する方法
こんにちは。 コンパイル時に関数の引数の型と引数名を取得する手段はありますでしょうか? 関数名は__FUNCTION__がありますが、引数をなんらかの方法で取得したいのですが手段はありますでしょうか? foo(int a0, int a1 ) なら"int a0, int a1"みたいな感じで取得できればと思っています。
- ベストアンサー
- C・C++・C#
- 関数の引数のデフォルト値について
PHP5.2.4を使用しています。 自作関数で、例えば数値や文字列を受け取る引数のデフォルト値を 「''」で入力されてないかをチェックする場合と、 「NULL」で入力されてないかをチェックする場合とでは、 どちらが良いというのはあるのでしょうか? function a($arg = '') { if($arg == '') { } } //または function a($arg = NULL) { if(is_null($arg)) { } }
- ベストアンサー
- PHP
- Excel VBA ParamArray 可変個引数の渡し方
Excel VBAで 可変個引数関数Fanc1から、その引数を 可変個引数関数Fanc2に渡したい。 下記例では、A1=a, B1=b, C1=cのとき、#VALUE!となります。 Concatenate2(A1:B1,C1,"po")="abcpo" 問題無し Fanc1(A1:B1,C1,"po")=#VALUE! Fanc1でも上と同じ出力にしたいのです。 Function Concatenate2(ParamArray MyArray()) As String Dim S As String Dim v As Variant Dim c As Variant For Each v In MyArray If TypeName(v) = "Range" Then For Each c In v S = S & c.Value Next Else S = S & v End If Next Concatenate2 = S End Function Function Fanc1(ParamArray MyArray()) As String Fanc1 = Concatenate2(MyArray()) End Function
- 締切済み
- Visual Basic
- VBAの関数で引数渡しでエラー
関数呼び出しでObject型を渡したいのですが「引数の型が一致していません」との エラーになってしまいます。 以下のプログラムをどのように修正すればよいのでしょうか? Sub Test() Dim obj As Object Set obj = CreateObject("Scripting.Dictionary") : Sample(obj) End Sub Function Sample(obj As Object) End Function
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございます。 >注)VBの場合文字列に"を付ける場合は"を2つ続ける必要があります。 実は、追加の質問をした後に、いろいろと試してみました。 ダブルクォーテーションを増やしたり減らしたりと・・・ しかし、まさか3つも続けるとは思いませんでした。 いろいろと試した結果、引き数はあきらめ、引き数の値を返す関数をつくり、 その名前を入れると、とりあえずやりたいことが出来ました。 でも、改めてこのやり方で試してみたいと思います。 ありがとうございました。