Veröffentlicht 21. Oktober 200420 j 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:
21. Oktober 200420 j 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...
21. Oktober 200420 j 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.
21. Oktober 200420 j 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
21. Oktober 200420 j 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
21. Oktober 200420 j Frag doch den Namen des Charts ab, du hast doch beim erstellen einen gegeben. Und wenn es KW43 heißt, dann lösch es.
22. Oktober 200420 j 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
26. Oktober 200420 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.