Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Laufzeitfehler 9

Forumthread: Laufzeitfehler 9

Laufzeitfehler 9
21.01.2026 00:11:14
Daniel Weiss
@Karin/Beverly:

du hast mir vor einiger Zeit beim Thema "Balkenfarbe im Diagramm fixieren" geholfen (dieser Beitrag ist bereits geschlossen, ich kann darauf nicht mehr antworten). Gestern hatte ich einen Absturz im Excel bei den Seitenansicht-Einstellungen, seither habe ich folgendes Problem:

Ich habe immer 2 Excel-Dateien offen (Finanzen.xlsm und Auto.xlsm), beide haben u.a. ein Makro, dass sich die Werte alle Minuten aktualisieren. Die Auto-Datei hat dein Makro drin, mit dem Zusatz, dass es sich auch alle Minuten aktualisiert und die Diagrammfarben sich somit richtigstellen.

Seit dem Absturz verhält es sich wie folgt:
Wenn ich in der Auto.xlsm bin, funktioniert alles bestens mit der Aktualisierung, alle 1 Min wird aktualisiert.
Sobald ich aber in der Finanzen.xlsm bin, dann erhalte ich beim automatischen minütlichen Ausführen des Farben-Makros eine Laufzeitfehler 9 Fehlermeldung, beim Debuggen wird die unten fett markierte Zeile angeführt. Ich habe im Makro nichts verändert, außer damals den Namen in "Farben" umbenannt und die minütliche Aktualisierung hinzugefügt.
Das Makro lief seit 1 Monat problemlos, unabhängig in welcher Datei ich gerade arbeitete, aber jetzt kommt der Laufzeitfehler. Ich bin mit meinem Wissen am Ende und finde keinen Fehler...

Ich vermute, er findet in das Tabellenblatt "Übersicht", in dem das Makro ausgeführt werden soll, nicht in Finanzen - aber es war ja bisher auch kein Vermerk, dass es in "Auto" ausgeführt wird?

kannst du mir bitte nochmal helfen?

Danke!!!




Sub Farben()
Dim chrDia As ChartObject
Dim intPunkt As Integer
Dim rngFarbe As Range
Dim strBereich As String
Dim arrXWerte()
For Each chrDia In Worksheets("Übersicht").ChartObjects
arrXWerte = chrDia.Chart.SeriesCollection(1).XValues
strBereich = Split(chrDia.Chart.SeriesCollection(1).Formula, ",")(1)
chrDia.Chart.SeriesCollection(1).Format.Fill.Visible = msoTrue
For intPunkt = 1 To chrDia.Chart.SeriesCollection(1).Points.Count
Set rngFarbe = Range(strBereich).Find(arrXWerte(intPunkt), lookat:=xlWhole, LookIn:=xlValues)
If Not rngFarbe Is Nothing Then chrDia.Chart.SeriesCollection(1).Points(intPunkt).Interior.Color = rngFarbe.Interior.Color
Next intPunkt
Next chrDia
Application.OnTime Now + TimeValue("00:01:00"), "Farben"
End Sub
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9
21.01.2026 00:29:03
daniel
Hi
ohne Workbookangabe referenziert ein Worksheet(...) immer auf die gerade aktive Datei.

wenn du mehrere Dateien offen hast, solltest du in Makros immer auch die Datei/Workbook angeben, wenn du Sheets ansprichst.
For Each chrDia In Workbooks("Auto.xlsm").Worksheets("Übersicht").ChartObjects


wenn die Datei verwendet werden soll, die das Makro enthält, dann auch so, dann muss man den Namen nicht explizit angeben:
For Each chrDia In ThisWorkbook.Worksheets("Übersicht").ChartObjects


ohne die Workbookangabe ist es immer ein ActiveWorkbook.Worksheets(...)

Gruß Daniel
Anzeige
AW: Laufzeitfehler 9
21.01.2026 02:28:57
Daniel Weiss
danke, aber hmmm jetzt bekomme ich aber einen Laufzeitfehler 1004: Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen während ich in der Finanzen.xlsm arbeite.

Set rngFarbe = Range(strBereich).Find(arrXWerte(intPunkt), lookat:=xlWhole, LookIn:=xlValues)
AW: Laufzeitfehler 9
21.01.2026 08:43:32
Luschi
Hallo Daniel,

auch bei diesem Fehler ist die Referenz auf den Bereich der Diagrammdaten in der richtige Arbeitsmappe nicht gegeben:
- strBereich enthält nur den Tabellenbereich (TabelleXYZ!A1:Kxxx) oder eben den definierten Namen 'BlaBluBLa'
- aber eben nicht die passenden Arbeitsmappe, in der dieser Bereichsname gültig ist!
- Range zeigt wieder auf das die aktive Arbeitsmappe 'Finanzen.xlsm' statt auf die Auto-AM
- deshalb so: leite die passende Arbeitsmappe vom chrDia-Objekt ab
  das 1. Parent verweist auf das richtige Tabellenblatt und das 2. Parent auf die dazu passende Arbeistmappe

Set rngFarbe = chrDia.Parent.Parent.Range(strBereich).Find(arrXWerte(intPunkt), lookat:=xlWhole, LookIn:=xlValues)

Gruß von Luschi
aus klein-Paris

PS: warum das überhaupt jemals richtig geklappt hat - wissen nur die Excel-Götter!
Anzeige
AW: Laufzeitfehler 9
21.01.2026 11:49:59
daniel
Hi
check mal die Variable strBereich, welchen Wert die hat.
die sollte jetzt den Namen des Workbooks in eckigen Klammen, den Namen des Tabellenblatts und die Zelladresse beinhalten in dieser Form:

[Mappenname.xlsm]Tabellenblattname!Adresse

sollten Sonderzeichen vorhanden sein (auch das Leerzeichen ist eins), dürfen auch die Hochkommas nicht fehlen:

'[Mappenname.xlsm]Tabellenblattname'!Adresse

wenn der Mappenname fehlt, musst du diesen noch hinzufügen.

Gruß Daniel
Anzeige
AW: Laufzeitfehler 9
21.01.2026 21:00:47
Daniel Weiss
sorry aber ich verstehe nur Bahnhof.... so sieht das Makro aus - es heißt Auto.xlsm!Farben und bei Makros in wird es nur Auto.xlsm angezeigt. Workbook und Tabellenblatt stehen drin, müssen die noch wo drinstehen? Wenn ja wo? für mich ist das komplettes Neuland...

Danke...


Sub Farben()
Dim chrDia As ChartObject
Dim intPunkt As Integer
Dim rngFarbe As Range
Dim strBereich As String
Dim arrXWerte()
For Each chrDia In Workbooks("Auto.xlsm").Worksheets("Übersicht").ChartObjects
arrXWerte = chrDia.Chart.SeriesCollection(1).XValues
strBereich = Split(chrDia.Chart.SeriesCollection(1).Formula, ",")(1)
chrDia.Chart.SeriesCollection(1).Format.Fill.Visible = msoTrue
For intPunkt = 1 To chrDia.Chart.SeriesCollection(1).Points.Count
Set rngFarbe = Range(strBereich).Find(arrXWerte(intPunkt), lookat:=xlWhole, LookIn:=xlValues)
If Not rngFarbe Is Nothing Then chrDia.Chart.SeriesCollection(1).Points(intPunkt).Interior.Color = rngFarbe.Interior.Color
Next intPunkt
Next chrDia
Application.OnTime Now + TimeValue("00:01:00"), "Farben"
End Sub
Anzeige

Forumthreads zu verwandten Themen