TinTin Geschrieben 21. Oktober 2004 Teilen Geschrieben 21. Oktober 2004 hi, habe folgendes problem. ich erstelle aus einer Tabelle Diagramme zu einer gewählten Kalenderwoche (KW). alles schöm und gut. wenn ich aber ein diagramm zu einer woche zum 2ten mal erstelle, haut es mit nen fehler raus Die Methode 'Location' für das Object '_Chart' ist fehlgeschlagen ist auch logisch, denn das diagramm mit dem Namen existiert schon. das ist mein Code:sDiagrammName = "KW " & sKw With Charts.Add .ChartWizard Source:=Sheets("ges_laufzeit").Range("C2:N2,C3:N3"), _ gallery:=xlLine, Title:=sDiagrammName .Location Where:=xlLocationAsNewSheet, Name:=sDiagrammName End With es liegt bestimmt an xlLocationAsNewSheet so meine frage: wie kann ich abfragen ob ein Chart schon existiert und es dann gegebenenfalls löschen? oder wie kann ich ein schon bestehendes Chart überschreiben? sorry für mein unwissen, aber ich nicht so die ahnung von VBA... :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-roTekuGeL- Geschrieben 21. Oktober 2004 Teilen Geschrieben 21. Oktober 2004 willst du ALLE charts löschen, oder nur das eine, spezielle? also für alle hab ih grad was parat: If Charts.Count > 0 Then Application.DisplayAlerts = False Charts.Delete Application.DisplayAlerts = True End If das alerts wird ausgeschaltet, weil er sonst nachfragt... und die frage nach dem dem cout ist, weil wenn keine charts da sind der befehl Charts.Delete das Tabellenblatt löscht das grad aktiv ist oder aber du kennst den Index deines Diagramms: Charts(index).delete dann löschst du nur das eine... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 21. Oktober 2004 Autor Teilen Geschrieben 21. Oktober 2004 was ich will ist folgendes: ich wähle z.B KW 43 jetzt soll ein Chart für KW 43 mit dem Namen 'KW 43' erstellt werden das funktioniert wenn ein Chart mit diesem Namen nicht existiert. Wenn es existiert bekomme ich diesen Fehler.Die Methode 'Location' für das Object '_Chart' ist fehlgeschlagen ist auch verständlich. nun will ich for dem Erstellen des Charts mit dem Namen KW 43 überprüfen ob es schon existiert. Wenn es existiert, soll es gelöscht werden, Damit ich es neu erstellen kann. eine alternativer wäre ein bestehendes Chart zu überschreiben, ich habe aber keine Ahnung wie das geht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-roTekuGeL- Geschrieben 21. Oktober 2004 Teilen Geschrieben 21. Oktober 2004 Sheets("KW34").Select ActiveWindow.SelectedSheets.Delete aber vorher die nachrichten wie oben unterdrücken, also erst mit false abschalten und dann mit true wieder an, damit wichtige meldungen dann nich auch unterdrückt werden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 21. Oktober 2004 Autor Teilen Geschrieben 21. Oktober 2004 funktioniert aber nur wenn das zu selectende Sheet auch existiert. wenn nicht Laufzeitfehler '9' Index auserhalb des gültigen Bereichs mit Application.DisplayAlerts = False -> [B][COLOR=DarkOrange]Sheets(sDiagrammName).Select[/COLOR][/B] ActiveWindow.SelectedSheets.Delete Application.DisplayAlerts = True ich komme wohl nicht daran vorbei zu überprüfen ob ein chart existiert wenn ich es lösche ohne das es da ist gibt es fehler ... die frage ist nur wie!!?? .. bin jetzt schon etwas verzweifelt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobody Geschrieben 21. Oktober 2004 Teilen Geschrieben 21. Oktober 2004 Frag doch den Namen des Charts ab, du hast doch beim erstellen einen gegeben. Und wenn es KW43 heißt, dann lösch es. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 22. Oktober 2004 Autor Teilen Geschrieben 22. Oktober 2004 Auf der Spur war ich auch schon, wusste nur nicht wie. Nache einer Menge Suchen und Finden hab ich jetzt 'ne Lösung die funktioniert. Ich mache es jetzt wie folgt: iCount = Charts.count If iCount > 0 Then iI = 1 While iI <= iCount If Charts(iI).name = sDiagrammName Then Application.DisplayAlerts = False Charts(sDiagrammName).Delete Application.DisplayAlerts = True End If iI = iI + 1 Wend End If So gehts jetzt. Wenn Jemand noch ne elegantere Möglichkeit kennt, her damit. Wie schon gesagt, ICH hab VBA nicht erfunden ... Ciao TinTin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
matthiasr Geschrieben 26. Oktober 2004 Teilen Geschrieben 26. Oktober 2004 Hallo, ich muss sagen das ich auch erst seit kurzem mit VB programmiere, meine Wurzeln liegen mehr bei c/c++ ( Angeber ) aber ich habe bei einem Kollegen nachgefragt die den von mir beschriebenen Weg auch als gängige Methode ansehen On Error Resume Next Verwende diesen Code wenn Du weist das ein Fehler auftreten kann, wie z. B. Du willst ein Verzeichniss löschen es existiert aber nicht, dabei tritt auch der von Dir beschrieben Fehler auf. Genau so sollte es mit Deinem Chart funktionieren. Lösche dann das Chart und über gegebe dem System mittels On Error Goto 0 wieder die Fehlerbehandlung. Wie gesagt, ich bin in VB auch neu und mit erschien das auch etwas suspekt allerdings ist das bei meinen Kollgegen als NORMAL ein Vorteil von VB angesehen worden. Hoffe das es Dir helfen kann. Gruß Matthias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.