Ich habe eine Schleife Makro berechnen Durchschnittswerte von drei Werten. In seltenen Fällen sind alle drei Werte möglicherweise leer, daher muss das Makro die Zelle verlassen, in der der Durchschnitt leer gedruckt wird, und mit der nächsten Iteration der Schleife fortfahren.Durchschnitt mit allen Leerwerten Fehlerbehandlung
Ich habe keine Fehlerbehandlung vor, also nicht sicher, der beste Weg, um es zu stoßen. Hier ist mein Code:
Sub sumavg()
Dim i As Long, j As Long
With Worksheets("datasummary")
For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row Step 5
For j = 1 To 6
With .Rows(i + 2)
.Columns(19 + j).Value = Application.WorksheetFunction.Average(.Columns(j), .Columns(j + 5), .Columns(j + 10))
End With
With .Rows(i + 3)
.Columns(19 + j).Value = Application.WorksheetFunction.Average(.Columns(j), .Columns(j + 5), .Columns(j + 10))
End With
Next
Next
End With
End Sub
Try 'On Error Resume Next' – nightcrawler23
@ nightcrawler23 Ich habe das in Betracht gezogen. Nur besorgt, die Ergebnisse könnten unvorhersehbar sein, da der Fehler nicht behandelt wird. Und wird diese Zeile am Anfang des Makros geschrieben oder kann sie in die Schleife geschrieben werden? – shecodes
@shecodes, Sie haben recht, wenn Sie 'On Error Resume Next' vermeiden, da es eine" blinde "Lösung für den einen Fehler ist, den Sie bereits kennen (und das ist in Ordnung) und andere mögliche Fehler, von denen Sie nichts wissen (und das ist nicht gut). Am besten ist _catch_ der Fehler und behandle ihn entsprechend, da eine _real_ Fehlerbehandlung es dir erlauben könnte oder die Objektfunktionen von 'Application' zu verwenden, um mögliche Fehler in den zurückgegebenen Wert zu verpacken (siehe meine Antwort) – user3598756