Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Problem mit #NV

Problem mit #NV
24.05.2002 08:07:22
Timo
Hallo

Habe aus einer Formel das Ergebnis #NV erhalten. Die Formelbezüge habe ich über kopieren-Inhalte einfügen-Werte in Text konvertiert.
Versuche ich mit VBA die Zelle auszuwerten, in der #NV steht (z.B. IF..THEN), dann erhalte ich den Fehler 2042.
Weiterhin kann ich zwar per Ersetzen den Inhalt beliebig verändern, aber nicht über ein Makro. (Ich habe das Makro mitschreiben lassen und versuche es dann zu starten ohne Änderung)

Was tun??


Gruß

Timo


Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Problem mit #NV
24.05.2002 08:11:25
Hajo
Hallo Tino

so ganz habe ich noch nicht gelesen was Du machen möchtest.

Ein Lösung wäre =Wenn(Istfehler(Deine_Formel);0;Deine_Formel)

Gruß Hajo

Re: Problem mit #NV
24.05.2002 09:28:31
Timo
Codeschnipsel:

Range("c4:e" & lZ).Select
Selection.Replace What:="#NV", Replacement:="-", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Range("f3").Value = "Änderung"
With ActiveSheet
For i = 5 To lZ
If .Cells(i, 5) = "#NV" Then
.Cells(i, 7) = "neu dazu"
ElseIf .Cells(i, 5) = "#NV" Then
.Cells(i, 7) = "entfällt"
End If

Next

Der REplace-Befehl schlägt fehlt (keine Ersetzungen) und die IF..THEN-Abfrage provoziert Fehler.
Das Ganze ist Teil eines VBA-Makros und sollte relativ elegant gelöst sein.

Hoffe, Du kannst mir weiterhelfen

Anzeige
Re: Problem mit #NV
24.05.2002 10:02:53
Martin Beck
Hallo Timo,

mal davon abgesehen, daß das Ersetzen von und Vergleichen auf #NV so nicht funktionieren kann, das #NV kein Text ist, enthält Dein Codeschnipsel einige "Merkwürdigkeiten", die mir unverständlich sind.

1. M.E. sind die IF- und ElseIf-Bedingungen identisch, sollen aber unterschiedliche Aktionen veranlassen. Das kann nicht funktionieren.

2. Selbst wenn die Bedingungen korrekt wären, können sie logisch nie erfüllt sein, sofern der Replace-Vorgang erfolgreich war. Nehmen wir mal an, lZ=6. Dann ersetzt Du im Bereich C4:E6 alle #NV. Danach überprüfst Du den Bereich E5:E6 auf #NV (For-Schleife und IF-Bedingung). Da kann dann aber kein#NV mehr sein.

3. Das With.ActiveSheet ist überflüssig.

Zum Ersetzen von und Vergleichen auf #NV kannst Du die WorksheetFunction IsNA verwenden (entspricht der Tabellenblattfunktion ISTNV). Das geht ansatzweise wie folgt:

Die ElseIF Bedingung mußt Du noch anpassen.

Gruß
Martin Beck

Anzeige
Re: Problem mit #NV
24.05.2002 10:21:38
Timo
Danke Martin

Zu meiner Entschuldigung: Ich habe noch ein paar Dinge ausprobiert und geändert, daher kommt das Durcheinander mit dem Ersetzten und Abfragen von #NV.

Re: Problem mit #NV
24.05.2002 10:29:57
Timo
Nachtrag: Es geht leider noch immer nicht, das Ersetzten wird nicht ausgeführt und die IF..THEN-Bedingung bringt noch immer Fehler 2042.

Was nun????

Anzeige
Re: Problem mit #NV
24.05.2002 10:40:16
Martin Beck
Hallo Timo,

wie kommen die #NV in der Tabelle zustande, als Ergebnis einer Formel, z.B. SVERWEIS? Dann muß der Code funktionieren, ich habe ihn natürlich getestet (unter XL97, aber das dürfte kein Problem sein).

Was besagt der Laufzeitfehler 2042 (Text der Fehlermeldung)?

Poste nochmal den von Dir jetzt verwendeten Code.

Gruß
Martin Beck

Anzeige
Re: Problem mit #NV
24.05.2002 11:13:54
Timo
Hallo Martin

Die #NV sind das Resultat aus einem SVERWEIS. Die Formel habe ich aber durch den Text ersetzt (Kopieren-> Inhalte einfügen -> Werte).

Aber ich habe meinen Fehler gefunden, habe den DIM-Befehl ignoriert, da ich dachte, c wird dann als Variant also auch als Range definiert.

Trugschluß!

Es geht, Danke vielmals!!


Gruß

Timo

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

NV in Excel: Fehlerbehebung und Lösungen


Schritt-für-Schritt-Anleitung

  1. Identifiziere die Ursache des #NV: Stelle sicher, dass die #NV-Fehler aus Formeln resultieren, wie z.B. einem SVERWEIS, der keinen passenden Wert finden kann.

  2. Verwende die IsNA-Funktion in VBA: Um auf #NV zu prüfen, kannst du die WorksheetFunction.IsNA Methode verwenden. Ein Beispiel könnte so aussehen:

    If WorksheetFunction.IsNA(Range("A1").Value) Then
        MsgBox "Die Zelle enthält #NV"
    End If
  3. Ersetzen von #NV in VBA: Um den Fehler #NV durch einen bestimmten Text zu ersetzen, nutze den Replace-Befehl:

    Range("A1:E10").Replace What:="#NV", Replacement:="DeinText", LookAt:=xlPart
  4. Fehler 2042 behandeln: Wenn du in deinem VBA-Skript den Fehler 2042 erhältst, überprüfe, ob du den DIM-Befehl zur Deklaration von Variablen verwendet hast, z.B.:

    Dim c As Range

Häufige Fehler und Lösungen

  • Fehler 2042: Dieser Fehler tritt auf, wenn eine Zelle einen Fehlerwert wie #NV enthält und du versuchst, mit dieser Zelle zu arbeiten. Um dies zu vermeiden, nutze die IsNA-Funktion.

  • IF-Bedingungen: Achte darauf, dass deine IF- und ELSEIF-Bedingungen korrekt formuliert sind. Ein Beispiel für eine korrekte IF-Bedingung:

    If Not WorksheetFunction.IsNA(Cells(i, 5).Value) Then
        ' Deine Logik hier
    End If
  • Ersetzen funktioniert nicht: Stelle sicher, dass der Bereich korrekt angegeben ist und dass die Ersetzungen auch wirklich durchgeführt werden können.


Alternative Methoden

  • Excel-Formel: Anstelle von VBA kannst du auch eine Excel-Formel verwenden, um #NV zu ersetzen:

    =WENN(ISTFEHLER(SVERWEIS(...)); "DeinText"; SVERWEIS(...))
  • Bedingte Formatierung: Du kannst auch eine bedingte Formatierung verwenden, um Zellen mit #NV hervorzuheben, sodass sie leichter identifiziert werden können.


Praktische Beispiele

  1. Beispiel für das Ersetzen: Angenommen, du hast eine Liste in den Zellen A1 bis E10, und du möchtest alle #NV durch "Nicht gefunden" ersetzen:

    Range("A1:E10").Replace What:="#NV", Replacement:="Nicht gefunden", LookAt:=xlPart
  2. Bedingte IF-Nutzung: Wenn du die Zellen überprüfst und eine Nachricht ausgeben möchtest, wenn ein #NV gefunden wird:

    For i = 1 To 10
        If WorksheetFunction.IsNA(Cells(i, 1)) Then
            MsgBox "In Zeile " & i & " ist #NV vorhanden."
        End If
    Next i

Tipps für Profis

  • Verwende Variablen: Um deinen Code klarer und weniger fehleranfällig zu gestalten, arbeite mit Variablen, um die Zellen und Bereiche zu referenzieren.

  • Debugging-Tools: Nutze die Debugging-Tools in VBA, um Fehlerquellen schneller zu identifizieren und zu beheben.

  • Dokumentation: Halte deine Code-Kommentare aktuell, um jederzeit nachvollziehen zu können, was deine Logik macht.


FAQ: Häufige Fragen

1. Was bedeutet #NV in Excel?

NV bedeutet, dass eine Formel keinen gültigen Wert zurückgeben kann, oft weil ein gesuchter Wert nicht gefunden wurde.

2. Wie kann ich #NV in Excel ersetzen?
Du kannst #NV entweder manuell ersetzen oder durch VBA-Code wie Range.Replace oder mit einer Excel-Formel, die ISTFEHLER verwendet.

3. Was ist der Fehler 2042?
Fehler 2042 tritt auf, wenn in einer VBA-Prozedur auf einen Wert zugegriffen wird, der #NV ist. Um dies zu vermeiden, nutze die Funktion IsNA.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige