Zum Inhalt springen

(Excel 2000 u. VBA) Diagramm Suchen und Löschen wenn es existiert


TinTin

Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...