2016-10-02 17 views
0

Ich möchte bestimmte Zahlen aus einem Array innerhalb der Funktion aus einem Bereich von Zellen zählen. Hier ist mein Code:Vba Excel Typ nicht übereinstimmen

Function countNumbers(cell As Range) 

    Dim rCell As Range 
    Dim myArray(25) As Integer 
    myArray(0) = 1 
    myArray(1) = 2 
    myArray(2) = 3 
    myArray(3) = 4 
    myArray(4) = 5 
    myArray(5) = 11 
    myArray(6) = 12 
    myArray(7) = 13 
    myArray(8) = 14 
    myArray(9) = 15 
    myArray(10) = 21 
    myArray(11) = 22 
    myArray(12) = 23 
    myArray(13) = 24 
    myArray(14) = 25 
    myArray(15) = 31 
    myArray(16) = 32 
    myArray(17) = 33 
    myArray(18) = 34 
    myArray(19) = 35 
    myArray(20) = 41 
    myArray(21) = 42 
    myArray(22) = 43 
    myArray(23) = 44 
    myArray(24) = 45 

    For Each rCell In cell.Cells 
     For i = LBound(myArray) To UBound(myArray) 
      If rCell.Value = myArray Then 
       countNumbers = countNumbers + 1 
      End If 
     Next i 
    Next rCell 

End Function 

Der Fehler, den ich bekomme, ist "Typ nicht übereinstimmen" in der ersten Zeile des Codes. Ich bin mit Ms-Excel 2007. Dank

+2

innerhalb der Schleife, ändern Sie Ihre Linie 'Wenn rCell.Value = myArray Then' auf' Wenn rCell.Value = myArray (i) Then' wie Sie zu überprüfen versuchen die Kriterien jeder Zelle innerhalb des Arrays –

+1

Modifizieren Sie auch 'Dim myArray (25) As Integer' zu 'Dim myArray (24) As Integer', ansonsten ist das letzte Element leer und alle leeren Zellen werden in Ihr' 'hineingehen Wenn' Kriterien. –

+0

@Shairado können Sie Ihre Korrekturen als Antwort hinzufügen, bitte! – KostasC

Antwort

1
Function countNumbers(cell As Range) 

    Dim rCell As Range 
    Dim myArray(24) As Integer 

    myArray(0) = 1 
    myArray(1) = 2 
    myArray(2) = 3 
    myArray(3) = 4 
    myArray(4) = 5 
    myArray(5) = 11 
    myArray(6) = 12 
    myArray(7) = 13 
    myArray(8) = 14 
    myArray(9) = 15 
    myArray(10) = 21 
    myArray(11) = 22 
    myArray(12) = 23 
    myArray(13) = 24 
    myArray(14) = 25 
    myArray(15) = 31 
    myArray(16) = 32 
    myArray(17) = 33 
    myArray(18) = 34 
    myArray(19) = 35 
    myArray(20) = 41 
    myArray(21) = 42 
    myArray(22) = 43 
    myArray(23) = 44 
    myArray(24) = 45 

    For Each rCell In cell.Cells 
     For i = LBound(myArray) To UBound(myArray) 
      If rCell.Value = myArray(i) Then 
       countNumbers = countNumbers + 1 
      End If 
     Next i 
    Next rCell 

End Function