- 日時: 2011/04/05 13:09
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[基本コード][][] * * キーワード:プロシージャ,複数の引数,配列処理,コードの簡略化,, * ***********************************************************************************
----------------------------------------------------------------------------- Re^7:完璧です - ダンボ 2004/09/09-11:17 No.358 -----------------------------------------------------------------------------
黒影さん、重ね重ねありがとうございます。美しいです。たった5行にまとめられましたね。
・IIfは処理速度が遅いこと ・アルゴリズムの流れがコーディングからは一目で読み取れない、 の2点が工業製品としてのプログラミングからは排除されるべき欠点でしょうが、今回、 皆さんに提起したのは芸術作品としてのプログラミングですので、これで完成形と思います。
ところで、kazuやん、黒影さんのお2人のアイデアをいただいて、私のコーディングは 下記でFIXしようかと思います。前提条件が少し変わりました。 ・3引数では足りない場合もありそうなので4引数、5引数にも対応したい。 ・長い文字列のInstr結果ではIntegerではあふれるのでLongとする。 ParamArrayを使う関係上、型宣言がVariantとなりちょっと気持ち悪い。
'********************************************************** '* pMin :引数の中で最小の正値を返す。但しすべて0なら0を返す '* i,N(可変) :いずれも、0または正整数 '* 戻り値 :最小の正値、又は0 '********************************************************** Private Function pMin(i As Long, ParamArray N() As Variant) As Long
Dim min As Long '最小値 Dim j As Variant
min = i For Each j In N min = IIf(min > j, IIf(j = 0, min, j), IIf(min = 0, j, min)) Next j pMin = min End Function
|