Übergeben Sie einen Bereich in eine benutzerdefinierte Funktion innerhalb einer Zelle

Hallo, ich bin mit VBA in Excel und übergeben zu müssen, in die Werte aus beiden Bereichen in eine benutzerdefinierte Funktion innerhalb einer Zelle die Formel. Die Funktion sieht wie folgt aus:


Public Function multByElement(range1 As String, range2 As String) As Variant
    Dim arr1() As Variant, arr2() As Variant
    arr1 = Range(range1).value
    arr2 = Range(range2).value
    If UBound(arr1) = UBound(arr2) Then
        Dim arrayA() As Variant
        ReDim arrayA(LBound(arr1) To UBound(arr1))
        For i = LBound(arr1) To UBound(arr1)
            arrayA(i) = arr1(i) * arr2(i)
        Next i
        multByElement = arrayA
    End If
End Function

Wie Sie sehen können, bin ich versucht, übergeben Sie die string-Darstellung der Bereiche auf. Im debugger kann ich sehen, dass Sie ordnungsgemäß übergeben, und die erste sichtbare problem tritt auf, wenn es versucht zu Lesen arr1(i) und zeigt als "subscript out of range". Ich habe auch versucht, die übergabe der Palette an sich (also range1 als Angebot...), aber ohne Erfolg.

Mein bestes Verdacht war, dass es sich um das Aktive Blatt, da hieß es von einem anderen Blatt aus der mit der Formel den Namen des Tabellenblattes ist Teil der saite), aber das war gebannt, da ich versuchte, Sie beide aus dem gleichen Blatt, und indem Sie das Blatt in den code.

BTW, die Formel in der Zelle sieht wie folgt aus:

=MITTELWERT(multByElement("A1:A3","B1:B3"))

oder

=MITTELWERT(multByElement("Meine Tabelle1!A1:A3","Meine Tabelle1!B1:B3"))

wenn ich rufen Sie es aus einem anderen Blatt.

Ich Frage mich, warum Sie nicht verwenden Sie die array-Funktion? Das heißt, geben Sie die Formel in der bar =MITTELWERT(A1:A3*B1:B3) und drücken Sie dann STRG+UMSCHALT+ENTER fügt einen array-Funktion ({} drumherum) , multipliziert jedes element in A1:A3, die von B1:B3
Das ist eine gute Idee, die ich gedacht hätte, sondern lieber versuchen, dieses heraus, weil der Platz auf dem Blatt und der möglichen Erweiterung machen würden, von dieser Funktion Gebrauch.

InformationsquelleAutor Luis | 2010-06-10

Schreibe einen Kommentar