Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufzeitfehler 1004

Laufzeitfehler 1004
06.12.2006 16:40:04
Doro
Hallo zusammen,
ich habe ein Makro, welches ein Diagramm erzeugt. Und hinterher sollen Legendeneinträge gelöscht werden mit diesem Code:
For n = 1 To (2 * numseats)
ActiveChart.Legend.LegendEntries(numseats + 4).Delete
Next n
(numseats ist ne weiter oben definierte Variable, an der For Next Schleife liegt es nicht...)
Nun funktioniert das manchmal, meistens kommt aber Laufzeitfehler 1004 (Delete Methode des LegendEntry Objektes konnte nicht ausgeführt werden). Ich weiß, dass es sauberer wäre, dem Diagramm nen Namen zu geben, weiß aber nicht genau, wie das geht. Außerdem spreche ich das Diagramm vorher und nachher auch erfolgreich mit "ActiveChart" an. Hat jemand ne Idee?
Schöne Grüße,
Doro

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004
06.12.2006 16:58:01
Stefan
Hallo Doro,
Mag sein dass ich voellig falsch liege und es durchaus Sinn macht, aber vielleicht schaust Du Dir das nochmal an:
Angenommen, "numseats" ist 3. Dann versucht dein Makro 6 mal (1 bis 2*3) den 7. Eintrag deiner Legende zu loeschen (3+4). Das heisst Du musst mindestens 12 Legendeneintraege haben, um keinen Fehler zu produzieren. Was mich stutzig macht ist dass Du die Laufzahl n in deiner Schleife nicht verwendest. Das kann zwar manchmal gewuenscht sein, aber meistens verwendet man sie doch irgendwie, z.B. als ActiveChart.Legend.LegendEntries(n+ 4).Delete...
Schoene Gruesse
Stefan
Anzeige
AW: Laufzeitfehler 1004
06.12.2006 17:07:02
Doro
Hallo Stefan,
erstmal danke für deine schnelle Reaktion. Okay, etwas mehr Hintergrund: numseats ist die Anzahl meiner Testobjekte (übrigens Autositze, aber daran liegt es wohl nicht :-)). Pro Sitz erzeuge ich drei Datenreihen, sowie über alle Sitze den Mittelwert. Macht numseats * 3 plus 3 Datenreihen. Die Mittelwerte sollen in der Legende erscheinen, und für jeden Sitz ein Eintrag mit ner anderen Farbe. Macht numseats + 3 Legendeneinträge. Das Makro soll (numseats * 2) mal den (numseats +4).ten Eintrag löschen, also vom (numseats + 4).ten bis zum letzten Eintrag. In ner anderen DAtei klappt das übrigens...
Schöne Grüße,
Doro
Anzeige
AW: Laufzeitfehler 1004
06.12.2006 17:10:12
Erich
Hallo Doro,
meinst du vielleicht das?
Sub tst()
For n = 2 * numseats To 1 Step -1
ActiveChart.Legend.LegendEntries(n + 4).Delete
Next n
'oder (unwahrscheinlicher, aber könnte ja sein...)
For n = 2 * numseats To 1 Step -1
ActiveChart.Legend.LegendEntries(numseats + 4).Delete
Next n
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Laufzeitfehler 1004
06.12.2006 17:25:15
Doro
Hallo Erich,
Danke für die schnelle Rückmeldung! Also wenn ich "rückwärts laufe", meine ich Folgendes:
For n = (3 * numseats + 3) To (numseats + 4) Step -1
ActiveChart.Legend.LegendEntries(n).Delete
Next n
Aber es kommt der gleiche Laufzeitfehler. Irgendwie greift VBA nicht auf das Diagramm zu.
Zur Klärung, worum es geht: Siehe bitte meine Antwort auf die erste Rückmeldung
Danke + viele Grüße!
Doro
Anzeige
AW: Laufzeitfehler 1004
06.12.2006 17:44:04
Erich
Hallo Doro,
lass dir doch mal oberhalb der Delete-Schleife die Anzahl ausgeben:
msgbox ActiveChart.Legend.LegendEntries.Count
Geht das noch?
Wenn ja: Passt die Anzahl zu numseats?
Wenn nein: Ist das Chart aktiv?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Laufzeitfehler 1004
06.12.2006 17:57:58
Doro
Hi Erich,
das ist copy / paste aus ner Antwort von mir an einen anderen Teilnehmer.
Okay, etwas mehr Hintergrund: numseats ist die Anzahl meiner Testobjekte (übrigens Autositze, aber daran liegt es wohl nicht :-)). Pro Sitz erzeuge ich drei Datenreihen, sowie über alle Sitze den Mittelwert. Macht numseats * 3 plus 3 Datenreihen. Die Mittelwerte sollen in der Legende erscheinen, und für jeden Sitz ein Eintrag mit ner anderen Farbe. Macht numseats + 3 Legendeneinträge. Das Makro soll (numseats * 2) mal den (numseats +4).ten Eintrag löschen, also vom (numseats + 4).ten bis zum letzten Eintrag. In ner anderen Datei klappt das übrigens...
Habe die Messagebox eingefügt, und komme in meinem Beispiel (numseats = 16) auf 51 Sitze. Stimmt also genau. Ich möchte Eintrag 20 bis 51 löschen. Das Problem ist nach wie vor, dass das Diagramm nicht aktiv ist. Obwohl ich es sowohl vorher als auch nachher problemlos mit ActiveChart ansprechen kann: Ein Ausschnitt aus dem Code:
Das steht davor:
For k = 1 To numseats
For l = 0 To 2
With ActiveChart.SeriesCollection(k + l * numseats + 3)
With .Border
.ColorIndex = Sheets("Color").Cells(k + 1, 2).Interior.ColorIndex
.Weight = xlThin
.LineStyle = xlContinuous
End With
.MarkerBackgroundColorIndex = Sheets("Color").Cells(k + 1, 2).Interior.ColorIndex
.MarkerForegroundColorIndex = Sheets("Color").Cells(k + 1, 2).Interior.ColorIndex
.MarkerStyle = xlCircle
.Smooth = False
.MarkerSize = 6
.Shadow = False
End With
Next l
Next k
Und das danach:
ActiveChart.ChartArea.Border.LineStyle = 0
ActiveChart.HasLegend = True
With ActiveChart.Legend
.Position = xlRight
.Font.Size = 8
With .Border
.Weight = xlHairline
.LineStyle = xlAutomatic
End With
With .Interior
.ColorIndex = 15
.PatternColorIndex = 1
.Pattern = xlSolid
End With
End With
Also alles mit ActiveChart...
Grüße,
Doro
Anzeige
AW: Laufzeitfehler 1004
06.12.2006 19:32:01
Erich
Hallo Doro,
wann genau tritt der Fehler auf? Schon beim 1. Delete-Versuch?
Probier bitte mal
   For n = ActiveChart.Legend.LegendEntries.Count To numseats + 4 Step -1
ActiveChart.Legend.LegendEntries(n).Delete
MsgBox ActiveChart.Legend.LegendEntries.Count
Next n
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Laufzeitfehler 1004
07.12.2006 10:31:38
Doro
Hi Erich,
Ja, beim ersten Delete Versuch. Wie gesagt, das Problem ist, dass gar nicht aufs Diagramm zugegriffen werden kann.
Grüße,
Doro
AW: Laufzeitfehler 1004
07.12.2006 11:27:40
Erich
Hallo Doro,
noch'n Versuch - vielleicht ist ja an der Legende etwas faul und Excel kann sie reparieren:
Kannst du mal manuell die Legende rausnehmen, die Mappe speichern und die Legende dann neu erstellen lassen?
Ändert sich dann etwas?
Sonst fällt mir dazu nichts mehr ein, ohne die Mappe.
Du könntest sie hier hochladen oder mir schicken: eri474 bei web.de
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Laufzeitfehler 1004
07.12.2006 12:31:04
Doro
Hi Erich,
kann die Datei leider nicht hochladen, da sind vertrauliche DAten drin. Ich glaube nicht, dass es an der Legende liegt. Zum Einen erstelle ich mit dem Makro jedes Mal das komplette Diagramm neu, und zum Anderen greife ich später erneut auf die Legende zu und ändere die Schriftgröße und die Hintergrundfarbe. Das Problem ist nach wie vor, dass er den Befehl ActiveChart nicht ausführt.
Grüße,
Doro
AW: Laufzeitfehler 1004
08.12.2006 10:52:36
Doro
Okay, nur zur Info: Ich hab es selber rausgefunden. Das Problem war, dass durch die Größe der Legende die Einträge, die gelöscht werden sollten, nicht angezeigt wurden. Dann kann Excel sie nicht aktivieren und somit auch nicht löschen.
Schöne Grüße,
Doro
Anzeige
Danke für Rückmeldung - Prima!
08.12.2006 12:33:53
Erich
Hallo Doro,
danke für die Info - dann ist das Problem ja gelöst.
Aus der Ferne war das wohl kaum zu erkennen...
Grüße von Erich aus Kamp-Lintfort und: Schönes Wochenende!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige