Erweitertes #NV ersetzen
18.08.2010 14:21:27
NoNet
Hallo Stefan,
falls im markierten bzw. angegebenen Bereich mehrere #NV-Werte unterschiedlichen Typs (Funktionsresultat oder konstanter Wert) vorkommen können, dann könntest Du folgendes Makro verwenden :
Sub NVErsetzen()
'18.08.2010, NoNet - www.excelei.de
Dim rngZelle As Range, rngBereich As Range, rngFehlerbereich As Range
Set rngBereich = Selection 'oder auch : Set rngBereich=[A1:F100]
If Application.CountIf(rngBereich, CVErr(xlErrNA)) Then
On Error Resume Next
'Nur Fehlerzellen, die einen Fehlerwert als Funktionsergebnis enthalten :
Set rngFehlerbereich = rngBereich.SpecialCells(xlCellTypeFormulas, 16)
If rngFehlerbereich Is Nothing Then
'Nur Fehler-KONSTANTEN, also #NV in Zelle
Set rngFehlerbereich = rngBereich.SpecialCells(xlCellTypeConstants, 16)
Else
'Fehlerwert als Funktionsergebnis verknüpft mit Fehlerwert als Konstante :
Set rngFehlerbereich = Union(rngFehlerbereich, _
rngBereich.SpecialCells(xlCellTypeConstants, 16))
End If
For Each rngZelle In rngFehlerbereich
'#NV durch Leerstring ersetzen : CVErr(xlErrNA) = VBA-Syntax für #NV
If rngZelle.Value = CVErr(xlErrNA) Then rngZelle.Value = ""
Next
End If
End Sub
Gruß, NoNet