Herbers Excel-Forum - das Archiv

Makro bei #NV im Blatt nicht ausführen

Bild

Betrifft: Makro bei #NV im Blatt nicht ausführen
von: Daniel

Geschrieben am: 18.12.2006 14:06:39
Hallo,
ich rufe ein Makro bei Worksheet_Calculate auf.
Ab und zu kann es zu einem #NV Fehler kommen, den ich leider
nicht verhindern kann.
Wenn in der Range B4:S65536 ein #NV steht (oder ein sonstiger fehler auftritt),
dann soll das Makro nicht ausgeführt werden.
Was muss ich vor dem eigentlichen Makro integrieren?
Danke und beste Grüße,
Daniel
Bild

Betrifft: AW: Makro bei #NV im Blatt nicht ausführen
von: Dr.
Geschrieben am: 18.12.2006 14:08:38
Hi,
warum solltest Du #NV nicht verhindern können? Z.B. so:
=WENN(ISTFEHLER(DeineFormel);;Deine Formel)
Bild

Betrifft: AW: Makro bei #NV im Blatt nicht ausführen
von: Daniel
Geschrieben am: 18.12.2006 14:25:33
Hallo,
es geht nicht. Ich erhalte Werte aus einem dritten Programm über eine Schnittstelle. Daher kann ich das Auftreten von #NV nicht vermeiden.
Grüße,
Daniel
Bild

Betrifft: AW: Makro bei #NV im Blatt nicht ausführen
von: Dr.
Geschrieben am: 18.12.2006 14:39:37
Wenn es sich um Werte handelt, gehe doch über Suchen/Ersetzen und eliminiere die #NV´s.
Bild

Betrifft: AW: Makro bei #NV im Blatt nicht ausführen
von: Daniel

Geschrieben am: 18.12.2006 14:44:14
Hallo,
ich erhalte die Werte aus dynamischen DDE-Formeln.
Man kann diese #NV Werte nicht umegehen, leider.
Die Werte ergeben sich aus Formeln, die millisekunden später wieder andere Werte annehmen.
Deshalb muss man diese #NV einfach hinnehmen und versuchen über Makros zu umgehen.
Grüße,
Daniel
Bild

Betrifft: Vergessen auf "offen" zu setzen- o.T.
von: Daniel
Geschrieben am: 18.12.2006 15:16:14
...
Bild

Betrifft: AW: Vergessen auf "offen" zu setzen- o.T.
von: K.Rola
Geschrieben am: 18.12.2006 15:29:05
Hallo,
vielleich so?
Sub version()
On Error GoTo ENDE
If Cells.SpecialCells(xlCellTypeFormulas, 16).Count = 0 Then
MsgBox "#NV im Blatt!"
End If
ENDE:
MsgBox "Kein #NV im Blatt."
'dein eigenlicher Code
End Sub

Bild

Betrifft: AW: Vergessen auf "offen" zu setzen- o.T.
von: Daniel

Geschrieben am: 18.12.2006 15:44:42
Hallo,
wenn ich jetzt #NV im Blatt stehen habe (durch eine Formel hervorgerufen), dann wird der Code trotzdem ausgeführt.
Vielleicht ist es doch am besten wenn ich das Makro einfach einfüge:
wie gesagt, aufgerufen wird es durch WorkSheet_Calculate.
Sub Change_Phase()
Dim c As Range
With Sheets("OrderSheet")
For Each c In .Range("N4:N" & .Range("N65536").End(xlUp).row)
If c.Offset(0, 5) = 1 And c.Offset(0, 2).Value = ACTIVE Then
c.Replace What:="?phase.OA", Replacement:="?phase.ALL", LookAt:=xlPart
End If
Next c
End With
End Sub

Vielleicht wäre es sinnvoll nur die aktuell in der Berechnung befindlichen Zellen zu prüfen auf #NV. Also wenn c.Offset(0,5) = #NV oder c.Offset(o,2) = #NV dann wird nichts gemacht.
Leider weiß ich selbst nicht wie ich das verändern muss.
Daniel
Bild

Betrifft: AW: Vergessen auf "offen" zu setzen- o.T.
von: K.Rola

Geschrieben am: 18.12.2006 20:20:38
Hallo,
"Die Werte ergeben sich aus Formeln, die millisekunden später wieder andere Werte annehmen."
Kann mir nicht vorstellen, dass da dein Code was reißen kann, zudem entspricht
es kaum noch der ursprünglichen Fragestellung.
Tipp, noch mal präzisieren und Frage ggf. neu stellen.
Gruß K.Rola
 Bild