So habe ich versucht, eine Funktion zum Hinzufügen von Dezibel in VBA zu erstellen. Ich habe versucht, ParamArray zu verwenden, aber ich habe Probleme mit der Informationsverarbeitung. Idealerweise würde es als SUM() funktionieren und einfach alle Eingaben übernehmen und in eine Formel und einen Boom werfen.Param Array Probleme mit Eingabe
Gerade jetzt, ich habe:
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
Ich mag würde es einen Eingang wie DBADD3 (A1: A3, A5, A7) zu nehmen und noch etwas zu produzieren. Kann jemand helfen?
Bitte ein 'in args' Schleife anstelle einer einfachen' For' Schleife mit einem Zähler, erklären For Each Varg verwenden Sie die Variable 'cel' , verwende 'TypeOf args (i) ist Range' in anstelle von 'TypeName' und testen, ob' IsNumeric (cel.Value) 'vor dem Hinzufügen zu' dRunningTotal'. Ansonsten ist das eine gute Antwort, +1. – Leviathan
Hey @ user3561813 Ich habe ein weiteres Addendum. Das funktioniert gut, ABER wenn der Wert 0 ist, kommt es merkwürdig hoch. Ich würde gerne alle Iterationen überspringen, die 0 mit einer if-Anweisung oder etwas enthalten. Was denken Sie? Ich denke etwas in der Richtung von Wenn args (i) = 0 Dann dRunningTotal = dRunningTotal –
@ T.Heng Es ist nichts falsch mit dem Hinzufügen Ihrer eigenen Business-Logik zu dem Code. Es würde wahrscheinlich so aussehen: 'Wenn cel.Value <> 0 Dann' 'dRunningTotal = dRunningTotal + cel.Value' – user3561813