Problem mit #NV



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Problem mit #NV
von: Timo
Geschrieben am: 24.05.2002 - 08:07:22

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


nach oben   nach unten

Re: Problem mit #NV
von: Hajo
Geschrieben am: 24.05.2002 - 08:11:25

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


nach oben   nach unten

Re: Problem mit #NV
von: Timo
Geschrieben am: 24.05.2002 - 09:28:31

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

nach oben   nach unten

Re: Problem mit #NV
von: Martin Beck
Geschrieben am: 24.05.2002 - 10:02:53

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:


Sub NV()
Dim As Range
lZ = 6
For Each c In Range("c4:e" & lZ)
    If Application.WorksheetFunction.IsNA(c) = True Then
        c = "-"
    End If
Next

Range("f3").Value = "Änderung"

For i = 5 To lZ
    If Application.WorksheetFunction.IsNA(Cells(i, 5)) = True Then
            Cells(i, 7) = "neu dazu"
       ' ElseIf Cells(i, 5) = "#NV" Then
            'Cells(i, 7) = "entfällt"
        End If
Next i

End Sub

Die ElseIF Bedingung mußt Du noch anpassen.

Gruß
Martin Beck

nach oben   nach unten

Re: Problem mit #NV
von: Timo
Geschrieben am: 24.05.2002 - 10:21:38

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.

nach oben   nach unten

Re: Problem mit #NV
von: Timo
Geschrieben am: 24.05.2002 - 10:29:57

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????

nach oben   nach unten

Re: Problem mit #NV
von: Martin Beck
Geschrieben am: 24.05.2002 - 10:40:16

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


nach oben   nach unten

Re: Problem mit #NV
von: Timo
Geschrieben am: 24.05.2002 - 11:13:54

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


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Problem mit #NV"