Anzeige
Archiv - Navigation
1344to1348
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
Inhaltsverzeichnis

Zu früh gefreut - Laufzeitfehler

Zu früh gefreut - Laufzeitfehler
09.01.2014 17:10:41
Flo
Liebes Forum,
ich habe vor zwei Tagen bereits Hilfe von Beverly bekommen. Ich wollte Diagramme per VBA anpassen, je nach dem, wie viele Datenreihen enthalten sind. Ich dachte auch schon, das Problem sei gelöst, jedoch ist der Code instabil. Zunächst funktioniert es. Wenn dann jedoch die ungespeicherte Datei wieder geöffnet und das Makro ausgeführt wird, erhalte ich nur noch diese Fehlermeldung:
Laufzeitfehler '-2147467259 (80004005)':
Die Methode für Top für das Objekt PlotArea ist fehlgeschlagen.
Der Code sieht so aus:
Sub Makro1()
For Each chrDiagramm In Worksheets("Grafiken").ChartObjects
With chrDiagramm.Chart
lngPunkte = .SeriesCollection(1).Points.Count
If lngPunkte = 1 Then
.ChartArea.Height = 120
.PlotArea.Top = 25
.PlotArea.Height = 70
.Legend.Top = 95
.Legend.Height = 25
End If
If lngPunkte = 2 Then
.ChartArea.Height = 160
.PlotArea.Top = 25
.PlotArea.Height = 110
.Legend.Top = 135
.Legend.Height = 25
End If
If lngPunkte = 3 Then
.ChartArea.Height = 200
.PlotArea.Top = 25
.PlotArea.Height = 150
.Legend.Top = 175
.Legend.Height = 25
End If
End With
Next chrDiagramm
Application.ScreenUpdating = True
End Sub

Vielen Dank schon einmal für eure Hilfe! Hier noch die Datei!
Viele Grüße
Florian
https://www.herber.de/bbs/user/88746.xlsm

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zu früh gefreut - Laufzeitfehler
10.01.2014 10:17:31
Flo
Ich habe es nun in meiner Verzweiflung probiert, die verschiedenen If-Bedingungen (lng-Punkte=1 ,2, 3 ...) in jeweils unterschiedliche Makros einzubauen, sodass ich für jede Bedingung ein eigenes Makro habe. Fehlanzeige. Der Fehler bleibt.
Microsoft gibt auf der Supportseite an, dass es sich bei diesem Fehler angeblich darum handelt, dass der Blattschutz das editieren von Objekten verhindert. Bei mir ist aber kein Blattschutz aktiviert! http://support.microsoft.com/kb/983119/en-us
Weiß niemand Rat?

AW: Zu früh gefreut - Laufzeitfehler
10.01.2014 10:57:18
Luschi
Hallo Florian,
kann es sein, daß du leere unsichtbare Diagramme in der Tabelle hast.
Du läuftst ja in der For-Schleife alle Diagramme durch. Leere Diagramme haben natürlich keine
Zeichnungsfläche (PlorArea). Ich würd in diese Richtung mal testen:
- alle Namen der Diagramme auflisten
- Sichtbarkeit auf 'True' setzen
- Höhe, Breite und Position von Oberen Rand auflisten (vielleicht außerhalb des sichtbaren Bereiches)
Gruß von Luschi
aus klein-Paris
PS: Ich bin mir sicher, wenn Du die folgenden Zeilen vertauscht, dann kommt der Fehler
bei .PlotArea.Height = 110
.PlotArea.Top = 25
.PlotArea.Height = 110

Anzeige
AW: Zu früh gefreut - Laufzeitfehler
10.01.2014 11:14:40
Flo
Hallo Luschi,
Danke schon einmal für deine Hilfe! Leider weiß ich nicht, wie ich deine drei Schritte ausführen soll. :/
Allerdings glaube ich nicht, dass sich verborgene Diagramme in der Mappe befinden, da ich die Datei selbst erstellt habe und keine Diagramme ausgeblendet habe oder so.
Mit deiner Vermutung am Ende hast du übbrigens Recht. Der Debugger zeigt nun den Fehler bei .PlotArea.Height = 110 an.
Viele Grüße!

AW: Zu früh gefreut - Laufzeitfehler
10.01.2014 11:59:11
Luschi
Hallo Florian,
ohne Beispieldatei von Dir wird es schlecht mit einer weiteren Vba-Hilfe.
und meine zutreffende Vermutung zeigt doch, das es Diagramme auf der Seite gibt, die keine Zeichnungsfläche haben - da ja das Diagramm selbst angesprochen werden kann.
Gruß von Luschi
aus klein-Paris
Verfälsche doch einfach die Ausgangsdaten und schicke die gezippte !!! Datei hierher.
Gruß von Luschi
aus klein-Paris
PS: Das zip-Format ist bei mir deshalb notwendig, da ich hier hinter einer meterdicken Firewall sitze die auch xlsx/xlsm-Dateien blockt.

Anzeige
AW: Zu früh gefreut - Laufzeitfehler
10.01.2014 12:23:21
Flo
Achso, das wusste ich nicht. Ich hatte ja in meinem Anfangspost die Datei hochgeladen. Also dann, biiteschön:
https://www.herber.de/bbs/user/88762.zip
:)
Vielleicht könntest du mir dann auch deinen Lösungsweg mitteilen, wie ich die evtl vorhanden unsichtbaren Diagramme ermitteln und unschädlich mahcen kann? Dann kann ich das in meiner Originaldatei umsetzen.
Vielen Dank!

AW: Zu früh gefreut - Laufzeitfehler
10.01.2014 16:26:31
Luschi
Hallo Florian,
habe Deine Datei mal getestet und es gibt keine versteckten bzw. leere Diagramme.
Mit folgendem kleinen Zusatz ist der Fehler weg:

Sub Makro2()
Dim chrDiagramm As ChartObject
For Each chrDiagramm In Worksheets("Grafiken").ChartObjects
chrDiagramm.Activate
With chrDiagramm.Chart
lngPunkte = .SeriesCollection(1).Points.Count
If lngPunkte = 1 Then
.ChartArea.Height = 120
.PlotArea.Top = 25
.PlotArea.Height = 70
.Legend.Top = 95
.Legend.Height = 25
End If
If lngPunkte = 2 Then
.ChartArea.Height = 160
.PlotArea.Top = 25
.PlotArea.Height = 110
.Legend.Top = 135
.Legend.Height = 25
End If
If lngPunkte = 3 Then
.ChartArea.Height = 200
.PlotArea.Top = 25
.PlotArea.Height = 150
.Legend.Top = 175
.Legend.Height = 25
End If
If lngPunkte = 4 Then
.ChartArea.Height = 240
.PlotArea.Top = 25
.PlotArea.Height = 190
.Legend.Top = 215
.Legend.Height = 25
End If
If lngPunkte = 5 Then
.ChartArea.Height = 280
.PlotArea.Top = 25
.PlotArea.Height = 230
.Legend.Top = 255
.Legend.Height = 25
End If
If lngPunkte = 6 Then
.ChartArea.Height = 320
.PlotArea.Top = 25
.PlotArea.Height = 270
.Legend.Top = 295
.Legend.Height = 25
End If
If lngPunkte = 7 Then
.ChartArea.Height = 360
.PlotArea.Top = 25
.PlotArea.Height = 310
.Legend.Top = 335
.Legend.Height = 25
End If
If lngPunkte = 8 Then
.ChartArea.Height = 400
.PlotArea.Top = 25
.PlotArea.Height = 350
.Legend.Top = 375
.Legend.Height = 25
End If
End With
Next chrDiagramm
Set chrDiagramm = Nothing
Application.ScreenUpdating = True
End Sub
Bei Grafiken ist ein aktivieren machmal lebensnotwendig, wenn man per Vba Hand anlegen will. Das Definieren von Objektvariablen sollte zum Standard gehören.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Zu früh gefreut - Laufzeitfehler
13.01.2014 09:18:05
Flo
Hallo Luschi,
ich bin erst jetzt dazu gekommen, deinen Code zu testen. Er funktioniert wunderbar! 1000 Dank!
Viele Grüße
Florian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige