Fehlermeldung bei Nullwerten

  • Sonstige

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Pascal.

    Fehlermeldung bei Nullwerten

    Hallo Leute,

    hoffentlich könnt ihr mir helfen: Ich habe eine Zelle mit einer Formel. Das Ergebnis wird anschließend als Graph ausgegeben. Wenn die Zelle 0 oder leer ist, wird automatisch #NV ausgegeben. Das muss auch so sein, weil der Grapf keine Nullwerte anzeigen soll.

    Das Problem: Der Graph wird durch ein Makro ausgegeben. Wenn jedoch #NV in der Zelle steht, kommt es zu einer Makro Fehlermeldung. Was kann mann da machen???

    Hoffe ihr könnt mir helfen
    Ich denke, an der Stelle wäre ein Quellcode ganz hilfreich. Wie wird der Graph gezeichnet? Kann man evtl. abfragen: if zelleninhalt <> #NV then ... ?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo,

    das bietet sich nicht an, da jeweils 12 Werte pro Graph und ca. 50 Graphen insgesamt ausgegeben werden.

    Der Quelcode eines Graphen sieht so aus:


    Quellcode

    1. ActiveChart.SeriesCollection(1).Values = "=BC_Geld!R7C4:R7C15"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dave“ ()

    Achso. Dann sieht die Sache natürlich anders aus.

    Man müsste sich eine Funktion schreiben, die die ganzen Felder durchläuft und dann alle #NV Werte auslässt. Nur weiß ich leider nicht, wie man das realisieren könnte.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Visual Basic-Quellcode

    1. Sub FindEmptyCells()
    2. '
    3. ' FindEmptyCells Makro
    4. ' Makro am 16.09.2006 von Pascal Scholtes aufgezeichnet
    5. '
    6. '
    7. Dim objWB As Workbook
    8. Dim objWS As Worksheet
    9. Dim objRange As Range
    10. Dim objCell As Range
    11. Set objWB = Excel.Application.ActiveWorkbook
    12. Set objWS = objWB.ActiveSheet
    13. Set objRange = objWS.Range(Cells(1, 1), Cells(30, 5))
    14. For Each objCell In objRange
    15. If objCell.Errors.Item(xlEvaluateToError).Value = True Then
    16. 'xlEvaluateToError = Die Auswertung der Zelle ergibt einen Fehlerwert
    17. MsgBox objCell.Text
    18. End If
    19. Next objCell
    20. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pascal“ ()

    Hallo,

    danke!!!

    1. Da es ca. 50 Graphen sind, gibt es eventuell eine Möglichkeit, das abzukürzen, bzw. was muss bei jedem Graphen genau stehen.

    2. Da ich den Graphen ja dort einfügen möchte, wo keine Fehlerwerte sind, müsste ich das doch so umschreiben:

    If objCell.Errors.Item(xlEvaluateToError).Value = NOT True Then

    oder muss es "wrong" heißen
    Wenn ich Dich richtig verstanden habe, soll der Graph nur bei Nichtnegativität und nicht Null ausgegeben werden. Also kannst Du anstatt Dir die MsgBox anzeigen zu lassen (was natürlich blanker Unsinn wäre) den Wert der Zelle auf 0 setzen

    Quellcode

    1. For Each objCell In objRange
    2. If objCell.Errors.Item(xlEvaluateToError).Value = True Then
    3. objCell.Text = 0
    4. End If
    5. Next objCell
    Hallo,

    könnt ihr mir das obige Skript ein bisschen genauer erklären. Bei absoluter Anfänger!

    Meine Daten werden hiermit ausgelesen:

    Quellcode

    1. ActiveChart.SeriesCollection(1).Values = "=Summery!R7C4:R7C15"


    Wie muss ich das in das Skript in das obige Beispiel einbauen, damit Nullwerte in dem Bereich R7C4:R7C15 nicht ausgegeben werden. Geht das damit überhaupt?

    Wenn z.B. die Werte 0;9;7;6;0;0; dort stehen, wird die Null nicht beachtet.

    Visual Basic-Quellcode

    1. Sub FindEmptyCells()
    2. '
    3. ' FindEmptyCells Makro
    4. ' Makro am 16.09.2006 von Pascal Scholtes aufgezeichnet
    5. '
    6. '
    7. Dim objWB As Workbook
    8. Dim objWS As Worksheet
    9. Dim objRange As Range
    10. Dim objCell As Range
    11. Set objWB = Excel.Application.ActiveWorkbook
    12. Set objWS = objWB.ActiveSheet
    13. Set objRange = objWS.Range(Cells(7, 4), Cells(7, 15))
    14. For Each objCell In objRange
    15. If objCell.Errors.Item(xlEvaluateToError).Value = True Then
    16. 'xlEvaluateToError = Die Auswertung der Zelle ergibt einen Fehlerwert
    17. objCell.Value = 0
    18. End If
    19. Next objCell
    20. End Sub


    Einfach nur den Range anpassen und drüberlaufen lassen, bevor der Graph gezeichnet wird. Dann werden alle Fehlerwerte durch 0 ersetzt und der Reste Deines Makros kann wie gewohnt den Graphen erzeugen.
    Danke erst mal. Null ist nicht so toll, weil dann der Graph steil abfällt und bei der nächsten Zahl wieder ansteigt. Ist es möglich, dass dann einfach der Wert ausgelassen wird.

    Beispiel:

    5;0;10

    In diesem Fall würde der Graph die x Achse schneiden und dann wieder steigen. Ich möchte aber, dass er von 5 direkt nach 10 verläuft. Geht das?


    Danke!!!
    Ich verstehe nicht so recht warum du eine Lösung mit VBA suchst, #NV funzt bei mir ohne Probleme.

    Frag einfach mit der Wenn-Funktion ab, ob der Wert 0 ist und ersetz es durch #NV und bezieh das Diagramm auf die Wenn-Formeln:

    Quellcode

    1. =WENN(A1<>0;A1;#NV)
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Geht so einfach leider nicht. Der Graph wird nämlich durch ein Makro ausgegeben. Wenn jedoch #NV in der Zelle steht, kommt es zu einer Makro Fehlermeldung.

    Ist das richtig, was ich vorhin gepostet habe? Kann es im Moment leider nicht ausprobieren.
    Der Graph wird nämlich durch ein Makro ausgegeben.

    Dann schreib doch die Werte für den Graph in eine Exceltabelle, dann hast du auch keine Probleme mit #NV, denn dafür ist #NV ja schließlich da.
    Oder du versuchst die Fehlermeldungen mit "On Error Resume Next" abzufangen.

    Ist das richtig, was ich vorhin gepostet habe?

    Nein, wie man Union verwendet siehe hier: Nur markierte Spalten in Makro
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Hallo,

    vielleicht habe ich mich unklar ausgedrückt:

    Die Werte liegen in einer Excel Tabelle: Sie werden aber in der zelle errechnet, also z.B: in der Zelle C5 steht A5 + B5

    Die Ergebnisse werden dann von dem Makro als Graph ausgegeben. das Makro weiss: Graph von C1:C12 ausgeben.

    Wenn z.B. A5 und A5 leer sind, ist logischerweise C1 auch Null. Daraus folgt, dass der Graph bei C5 abbricht (X Achse schneidet) und dann bei C6 wieder steigt. Dsa darf aber nicht sein. Der Graph soll dann von C4 direkt nach C6 führen. Excel macht das auch, wenn die Zelle C5 leer ist. Aber wenn dort eine Formel drin steht, dann knickt er immer ein, denn eine Formel kann nicht "leer" ergeben. Mit einer Wenn Schleife, die das Feld leer lässt, wenn das Ergbenis 0 ist, geht das nicht. Der Graph bricht trotzdem ein.

    Was gehen würde: Mit einer Wenn Schleife und dann #NV eintragen, wenn die Formel 0 ist. Aber dann kommt es zu der Fehlermeldung...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dave“ ()