- #1
A
Ace_NoOne
Bekanntes Mitglied
Themenersteller
- Dabei seit
- 07.04.2002
- Beiträge
- 403
- Reaktionspunkte
- 0
- Ort
- Germany
Hallo zusammen,
um den jeweils letzten nicht-leeren Wert einer Datenreihe herauszufinden (also z.B. die Werte des aktuellen Monats), habe mich mir folgende User-Defined Function geschrieben:
Das funktioniert an sich auch sehr gut.
Allerdings kommt es manchmal zu folgendem seltsamen Fehler: Wenn ich die Datei neu öffne, stimmen plötzlich die Werte der Zellen, welche diese Formel nutzen, nicht mehr. Entweder stehen dort vollkommen falsche Zahlen, oder einach nur #NV.
Wenn ich die jwlg. Zelle(n) aktiviere und per RETURN den Wert neu berechnen lasse (bzw. im gesamten Tabellenblatt = durch = ersetzen lasse... ), stimmt der Wert dann wieder.
Ich kann mir dieses Verhalten absolut nicht erklären - hat vielleicht jemand eine Idee, wie das Problem zu beheben ist?
PS: Die Funktion hätte man sicher besser schreiben können, aber ich bin kein VBA-Profi... (Beispielsweise funktioniert es seltsamerweise nicht mehr, wenn man die nicht leer- und die IsError-Überprüfungen per AND zusammenfasst!?)
um den jeweils letzten nicht-leeren Wert einer Datenreihe herauszufinden (also z.B. die Werte des aktuellen Monats), habe mich mir folgende User-Defined Function geschrieben:
Code:
' retrieve value from last non-empty row or column in selection
Function lastValue(rng As Range, searchRows As Boolean)
Dim firstRow As Integer, firstCol As Integer, _
rowCount As Integer, colCount As Integer, _
i As Integer
-> determine range
firstRow = rng.Row
firstCol = rng.Column
rowCount = rng.rows.Count
colCount = rng.Columns.Count
-> default return value
lastValue = CVErr(xlErrNA)
-> search rows
If searchRows = True Then
For i = (firstRow + rowCount - 1) To firstRow Step -1
If IsError(Cells(i, firstCol)) = False Then
If Cells(i, firstCol).value <> Then
lastValue = Cells(i, firstCol).value
Exit For
End If
End If
Next i
-> search columns
Else
For i = (firstCol + colCount - 1) To firstCol Step -1
If IsError(Cells(firstRow, i)) = False Then
If Cells(firstRow, i).value <> Then
lastValue = Cells(firstRow, i).value
Exit For
End If
End If
Next i
End If
End Function
Allerdings kommt es manchmal zu folgendem seltsamen Fehler: Wenn ich die Datei neu öffne, stimmen plötzlich die Werte der Zellen, welche diese Formel nutzen, nicht mehr. Entweder stehen dort vollkommen falsche Zahlen, oder einach nur #NV.
Wenn ich die jwlg. Zelle(n) aktiviere und per RETURN den Wert neu berechnen lasse (bzw. im gesamten Tabellenblatt = durch = ersetzen lasse... ), stimmt der Wert dann wieder.
Ich kann mir dieses Verhalten absolut nicht erklären - hat vielleicht jemand eine Idee, wie das Problem zu beheben ist?
PS: Die Funktion hätte man sicher besser schreiben können, aber ich bin kein VBA-Profi... (Beispielsweise funktioniert es seltsamerweise nicht mehr, wenn man die nicht leer- und die IsError-Überprüfungen per AND zusammenfasst!?)