Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1516to1520
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

Laufzeitfehler

Laufzeitfehler
01.10.2016 04:21:56
Michq
Guten morgen.
habe ein Problem mit folgender Datei:
https://www.herber.de/bbs/user/108538.xlsm
Es handelt sich um diverse Charts. Bei Klick auf das Dropdown-Feld in A1 (Blatt PPMH Charts), sollen sich die Daten in allen 3 Charts ändern. Die Daten für die Charts befinden sich im Blatt "Plant Data".
Leider bekomme ich immer einen Laufzeitfehler.
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.SeriesCollection(1).Values = "='PLANT DATA'!" & rng1.Address
ActiveChart.SeriesCollection(2).Values = "='PLANT DATA'!" & rng1.Offset(1, 0).Address
ActiveChart.SeriesCollection(3).Values = "='PLANT DATA'!" & rng1.Offset(2, 0).Address
ActiveChart.SeriesCollection(4).Values = "='PLANT DATA'!" & rng1.Offset(3, 0).Address

Der Debugger meldet, dass hier etwas nicht stimmt.
Wo liegt der Fehler?
Danke für eure Hilfe, hoffe ihr könnt mir noch weiterhelfen, da es sehr dringend ist und ich schon die halbe Nacht daran verbringe und den Fehler einfach nicht finde.
Gruß
Michq

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler
01.10.2016 07:31:56
fcs
Hallo Michq,
Hauptproblem:
Beim Setzen der Zellbereiche für rng1 und rng2 hast du die Zeilen-Numern im Cells-Teile nicht korrekt angepasst.
Nebenprobleme:
Für die Datenreihen müssen auch die X-Achsenwerte jeweils zugewiesen werden.
Und der Name der Reihen ebenfalls. Hier sind die im Diagram als Text vorgegebenen Werte verwirrend.
Das Makro kann dann wie folgt aussehen - getestet unter Office 365 (2016).
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Dim KW As Long, rng As Range
Dim KW1 As Long, rng1 As Range
Dim KW2 As Long, rng2 As Range
Dim intS As Integer
Dim objChart As Chart
KW = Replace(Target, "KW", "") * 1
KW1 = KW
KW2 = KW
With Worksheets("PLANT DATA")
Set rng = .Range(.Cells(3, 4), .Cells(3, KW + 3))
Set rng1 = .Range(.Cells(11, 4), .Cells(11, KW1 + 3))
Set rng2 = .Range(.Cells(19, 4), .Cells(19, KW2 + 3))
End With
Set objChart = ActiveSheet.ChartObjects("Chart 2").Chart
With objChart
For intS = 1 To 4
With .SeriesCollection(intS)
.XValues = "='PLANT DATA'!" & rng.Offset(-1, 0).Address
.Values = "='PLANT DATA'!" & rng.Offset(intS - 1, 0).Address
.Name = "='PLANT DATA'!" & rng.Offset(intS - 1, -1).Range("A1").Address
End With
Next
End With
Set objChart = ActiveSheet.ChartObjects("Chart 3").Chart
With objChart
For intS = 1 To 4
With .SeriesCollection(intS)
.XValues = "='PLANT DATA'!" & rng1.Offset(-1, 0).Address
.Values = "='PLANT DATA'!" & rng1.Offset(intS - 1, 0).Address
.Name = "='PLANT DATA'!" & rng1.Offset(intS - 1, -1).Range("A1").Address
End With
Next
End With
Set objChart = ActiveSheet.ChartObjects("Chart 4").Chart
With objChart
For intS = 1 To 4
With .SeriesCollection(intS)
.XValues = "='PLANT DATA'!" & rng2.Offset(-1, 0).Address
.Values = "='PLANT DATA'!" & rng2.Offset(intS - 1, 0).Address
.Name = "='PLANT DATA'!" & rng2.Offset(intS - 1, -1).Range("A1").Address
End With
Next
End With
End If
End Sub
In weiter komprimierter Form:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
Dim intC As Integer, KW(1 To 3) As Long, rng(1 To 3) As Range
Dim intS As Integer
Dim objChart As Chart
KW(1) = Val(Replace(Target, "KW", ""))
KW(2) = KW(1)
KW(3) = KW(1)
With Worksheets("PLANT DATA")
Set rng(1) = .Range(.Cells(3, 4), .Cells(3, KW(1) + 3))
Set rng(2) = .Range(.Cells(11, 4), .Cells(11, KW(2) + 3))
Set rng(3) = .Range(.Cells(19, 4), .Cells(19, KW(3) + 3))
End With
For intC = 1 To 3
Set objChart = ActiveSheet.ChartObjects("Chart " & Format(intC + 1, "0")).Chart
With objChart
For intS = 1 To 4
With .SeriesCollection(intS)
.XValues = "='PLANT DATA'!" & rng(intC).Offset(-1, 0).Address
.Values = "='PLANT DATA'!" & rng(intC).Offset(intS - 1, 0).Address
.Name = "='PLANT DATA'!" & rng(intC).Offset(intS - 1, -1).Range("A1").Address
End With
Next
End With
Next
End If
End Sub

Anzeige
AW: Laufzeitfehler
01.10.2016 14:14:54
Michq
Hallo Franz,
danke für deine Hilfe, funktioniert einwandfrei.
Muss das Makro jetzt nur noch für 23 andere Charts anpassen.
Gruß
Michq
AW: Laufzeitfehler
01.10.2016 07:32:24
Christian
hallo,

Set rng = .Range(.Range("D3"), .Cells(3, KW + 3))
Set rng1 = .Range(.Range("D11"), .Cells(3, KW1 + 3))
Set rng2 = .Range(.Range("D19"), .Cells(3, KW2 + 3))
muss natürrlich heißen:

Set rng = .Range(.Range("D3"), .Cells(3, KW + 3))
Set rng1 = .Range(.Range("D11"), .Cells(11, KW1 + 3))
Set rng2 = .Range(.Range("D19"), .Cells(19, KW2 + 3)

Übersichtlicher und weniger fehlerträchtig ist aber:

Set rng = .Cells(3, 4).Resize(, KW)
Set rng1 = .Cells(11, 4).Resize(, KW)
Set rng2 = .Cells(19, 4).Resize(, KW)
Gruß
Christian
Anzeige
AW: Laufzeitfehler
01.10.2016 14:06:47
Michq
Hi Christian,
top danke für deine Hilfe.
Funktioniert einwandfrei.
Gruß
Michq

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige