Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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:

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

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.

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 ;)

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

Frag doch den Namen des Charts ab, du hast doch beim erstellen einen gegeben. Und wenn es KW43 heißt, dann lösch es.

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.