私はVBAでデシベルを一緒に追加する関数を作成しようとしていました。 ParamArrayを使用しようとしましたが、情報の処理に問題があります。理想的には、SUM()として機能し、すべての入力を取り込み、数式とブームに投げ込むだけです。Param Arrayで入力が発生する
は今、私が持っている:と、まだ何かを作り出す:
Function DBADD3(ParamArray nums()) As Double
Dim DBPrTot As Variant
'this will be input into the log function at the end
DBPrTot = 0
'initializing value for use in for loop
For i = LBound(nums) To UBound(nums)
DBPrTot = DBPrTot + 10^(nums(i)/10)
'all of the values gathered from ParamArray are being input into this running total
Next i
DBADD3 = 10 * WorksheetFunction.Log10(DBPrTot)
'throwing the DBPrTot running value into our end equation
End Function
が、私はそれがDBADD3(A3、A5、A7 A1)のような入力を取るしたいと思います。助けてもらえますか?
変数 'cel'を宣言し、args'ループの代わりに、カウンターで簡単な' For'ループでは '各VARGについてを使用してください、 'TypeOf args(i)Is Range'を使用します。 'TypeName'の代わりに' dRunningTotal'に追加する前に 'IsNumeric(cel.Value)'をテストしてください。さもなければこれはよい答え、+1です。 – Leviathan
ちょっと@ user3561813私は別の補遺を持っています。これはうまくいきますが、値が0のときは奇妙になります。 if文などを使って0を含むすべての反復をスキップしたいと思います。どう思いますか? args(i)= 0の場合 dRunningTotal = dRunningTotal –
@ T.Heng自分のビジネスロジックをコードに追加することは何も問題はありません。 'cel.Value <> 0 Then' 'dRunningTotal = dRunningTotal + cel.Value'のようになります。 – user3561813