2017-10-30 3 views
0
For Each cell In rnData.Columns(13).SpecialCells(xlCellTypeVisible) 
    If cell > 0.25 And cell < 0.3 And cell.Offset(0, 3) >= valueMin And cell.Offset(0, 3) < valueMax And Year(cell.Offset(0, -2)) = Year(Sheet3.Cells(4, 3)) And Month(cell.Offset(0, -2)) = Month(Sheet3.Cells(4, 3)) Then 
     sum1 = sum1 + cell.Offset(0, 7) 
    End If 
Next 

Dieser Code gibt einen Laufzeitfehler 13 zurück, was könnte das Problem sein?Schleife durch sichtbare Zellen nach dem Filtern

+1

Konnte eine Reihe von Dingen sein - Fehlerwerte in den Zellen oder Zellen, die nicht den Datentyp (Daten/Zahlen) enthalten, die für die Operationen erforderlich sind, die Sie versuchen. – Rory

Antwort

0

Fehlernummer 13 kann erreicht werden, wenn Sie versuchen, einer Zahl eine Zeichenfolge hinzuzufügen. Also in sum1 = sum1 + cell.Offset(0, 7)cell.Offset(0,7) ist wahrscheinlich eine Zeichenfolge.

Code wie folgt umschreiben:

For Each cell In rnData.Columns(13).SpecialCells(xlCellTypeVisible) 
    If cell > 0.25 And cell < 0.3 And cell.Offset(0, 3) >= valueMin And cell.Offset(0, 3) < valueMax And Year(cell.Offset(0, -2)) = Year(Sheet3.Cells(4, 3)) And Month(cell.Offset(0, -2)) = Month(Sheet3.Cells(4, 3)) Then 
     debug.print cell.Offset(0,7);sum 
     sum1 = sum1 + cell.Offset(0, 7) 
    End If 
Next 

Wenn der Laufzeitfehler erscheint, drücken Sie Ctrl + G und einen Blick auf die Werte in dem sofortigen Fenster nehmen. Einer von ihnen sollte eine Zeichenfolge sein, keine Nummer.

+0

Ich denke, es zählt die Kopfzeile, die eine Zeichenfolge ist keine Nummer, wie kann ich es beheben? – Chadi

+0

Ok, ich habe es behoben, indem ich den Filterbereich von .Range (.Range ("A1"), .Range ("T2"). End (xlDown)) auf .Range (.Range ("A2"), .Range eingestellt habe ("T2"). Ende (xlDown)) – Chadi

Verwandte Themen