- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
660 :デフォルトの名無しさん[sage]:2015/05/06(水) 00:57:21.38 ID:2v/4EFCA - そんなことより参照を返せるようにしてくれないか?!
Byref引数で受け取ったものに何かした後、それをそのまま返せる機能がないのは困る。
|
- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
661 :デフォルトの名無しさん[sage]:2015/05/06(水) 00:58:38.44 ID:2v/4EFCA - それが無理なら配列の移動(move)でもいいぞ
|
- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
663 :デフォルトの名無しさん[sage]:2015/05/06(水) 08:28:12.14 ID:2v/4EFCA - >>662
>そのまま見ればいい それはおっしゃる通り。 しかしそれだと既存のライブラリが使えないのです。 初期値A0 -> A1 ->A2 -> ・・・ ->An って処理が連なっていて、一つ一つの処理は特定の関数がやるとする。 そのライブラリは、最終的なAnを求めるループ処理を抽象化してくれるんだけど、返り値を使っている。 >喧嘩売ってるのか? いや別に。すまんかった。
|
- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
666 :デフォルトの名無しさん[sage]:2015/05/06(水) 11:24:15.05 ID:2v/4EFCA - >>665
いや、>>663に書いたように「一つ一つの処理は特定の関数がやる」んで、その関数が参照を返すんならライブラリ側はそれに従うだけ。 >引数に設定したオブジェクトを見れば変更後の内容が取得出来る もちろんそれはそうだ。 でも自分でループを書いて処理のつど元の引数を見るっていう動作を入れることになってしまう。 ループを書くのは避けたい。 それと訂正ですがライブラリが「使えない」というのは言い過ぎで、変数のコピーがオーバーヘッドになってしまう、という意味です。
|
- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
672 :デフォルトの名無しさん[sage]:2015/05/06(水) 12:40:13.80 ID:2v/4EFCA - >>670
ライブラリ側では直接はどうしようもないかもしれないけど、何か考えてとリクエスト出をしておいた。
|
- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
675 :デフォルトの名無しさん[sage]:2015/05/06(水) 17:40:54.30 ID:2v/4EFCA - >>674
ユーザーが定義した「一つ一つの処理」をする関数 → UFunc ループを抽象化したライブラリ関数 → LibFunc 処理対象となる配列など → param LibFunc(UFunc, param) こうやったとき、LibFuncはUFuncの返り値を使いながらループ処理をする。 UFuncが参照を返せればこのコードは効率がいいけどそれができない。 しょうがないからライブラリ関数を使うのをあきらめてベタなループにするか、って話です。
|
- Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
679 :デフォルトの名無しさん[sage]:2015/05/06(水) 18:53:40.10 ID:2v/4EFCA - >>676
>>678 ユーザー関数はライブラリ関数を意識しないし、ライブラリ関数はいろんなユーザー関数を受け取るわけで。 UFunc1 は数値を受け取ってそれに +1 した値を返すだけ UFunc2 は大きな配列を受け取って、ランダムな一カ所を書き換える ライブラリ関数はそれらを繰り返し適用する。 UFunc1かUFunc2かのタイプ別にライブラリ側の関数も分けた方がいいってこと? 今は前者のタイプにしか対応していないので、後者を効率的に扱えるよう提案してみようかな。
|