質問: vbscriptで 変数(整数)a,b,cの三つのうち、最大であるものを見つけるには、どういったコードが一番すっきりしているでしょうか? if then elseif~ しかないのでしょうか?
回答: vbscriptとwshでサンプルを作成してみました。 maxvariables 関数として作成しています。 引数に評価したい変数の配列を渡します。 戻り値として、最大値を持つ変数のインデックスを返します。 vbscript では、アドレスが扱えないため、このような仕様にしました。 参考になればと思います。 ---- maxvariables.vbs option explicit '--- 処理開始 main wscript.quit '--- 処理メイン sub main() dim aryvariables, arymax dim a, b, c, d a = 4 b = 3 c = 2 d = 4 '--- 変数の配列を作る aryvariables = array(a, b, c, d) array_write "aryvariables:", aryvariables '--- 最大値を持つ変数を調べる arymax = maxvariables(aryvariables) array_write "arymax:", arymax end sub '--- 最大値を持つ変数のインデックス配列を返す function maxvariables(aryvariables) dim lngl, varmax, lngmaxcount, lngn, aryresult() '--- 最大値を求める lngl = lbound(aryvariables) varmax = aryvariables(lngl) lngmaxcount = 1 for lngn = lngl + 1 to ubound(aryvariables) if varmax < aryvariables(lngn) then varmax = aryvariables(lngn) lngmaxcount = 1 elseif varmax = aryvariables(lngn) then lngmaxcount = lngmaxcount + 1 end if next wscript.echo lngmaxcount '--- 戻り値の配列を作成する redim aryresult(lngmaxcount - 1) lngl = lbound(aryresult) for lngn = lbound(aryvariables) to ubound(aryvariables) if varmax = aryvariables(lngn) then aryresult(lngl) = lngn lngl = lngl + 1 end if next '--- 戻り値を設定する maxvariables = aryresult end function '--- 配列を出力する sub array_write(strtitle, aryvalues) dim strresult, lngn strresult = strtitle & "(" _ & ubound(aryvalues) - lbound(aryvalues) +1 & ")" for lngn = lbound(aryvalues) to ubound(aryvalues) strresult = strresult & " " & aryvalues(lngn) next wscript.echo strresult end sub ---- ココマデ