ich weiß nicth genau wie ich mein Problem richtig erklären soll.
Ich habe in meiner Excel Datei zwei Makros. Das eine ist dazu da, das sich die Charts in verschiedenen Tabellenblättern aktualisieren. Das sieht so aus:
Sub DiaAkt()
'
Dim chrtObj As ChartObject
Dim chrt As Chart
Dim ws As Worksheet
Set ws = ActiveSheet
Dim lCRow As Long
Dim srcRange As Range
' Anzahl Zeilen in Spalte B ermitteln
lCRow = 65536
If ws.Cells(65536, 2).Value = "" Then lCRow = Cells(65536, 2).End(xlUp).Row
' SourceRange-Definition - Der SourceRange wird auf die abgegebenen Werte gesetzt
' momentan: Cells(1,1) - Zelle in Spalte 1, Zeile 1 oder auch A1
' Cells(lCRow, 2) - Zelle in Spalte B, Zeile lCRow, z.B. B200
' dieser Bereich wird für ALLE nachfolgenden Zuweisungen verwendet, KEIN Diagramm
' erhält andere Quellwerte ! Wenn dies gewünscht ist, muss vor jeder weiter unten
' vorgenommenen Zuweisung ( SetSourceData Source:=srcRange) der srcRange verändert werden
Set srcRange = ws.Range(Cells(1, 1), Cells(lCRow, 2))
' durchlaufen aller evtl. vorhandenen ChartObjekte aller
' worksheets, Abgleich mit worksheetnamen und Chartnamen
' um das betreffende ChartObjekt zu identifizieren
For Each ws In ActiveWorkbook.Worksheets
For Each chrtObj In ws.ChartObjects
' Vergleich jedes ChartObjektes mit dem entsprechenden Namen
' über select ... end select, erweiterbar wenn mehrere Blätter / Charts Charts vorhanden sind
Select Case ws.Name
Case "Tabelle1"
Select Case chrtObj.Name
' Standardmässig erhält jedes Diagramm den Namen 'Chart 1' oder 'Diagramm 1'
' sofern es einen anderen Namen erhält, diesen entsprechend hier berücksichtigen
Case "Chart 1"
' Zuweisung der SourceData
chrtObj.Chart.SetSourceData Source:=srcRange
' .... ggfls.weitere Charts
End Select
' .... ggfls. weitere worksheets
End Select
Next chrtObj
Next ws
End Sub
So. Dies geht bei allen Charts bis ich folgendes Makro ausführe.
Dabie geht es darum Zeilen zu kopieren. Dann aktualisieren sich alle Charts, außer diejenigen die sich auf die zwei Tabellenblätter beziehen, in denen die Zeilen hineinkopiert werden. Hier das Makro:
Sub Zeilen_kopieren()
Dim ws As Worksheet
Dim wb As Workbook
Dim i As Long, j As Long, y As Long
Dim rng As Range, r As Range
Set wb = ActiveWorkbook
' Tab2 und 3 leeren
Set ws = wb.Worksheets("Winning Trades Data")
ws.Rows.Clear
Set ws = wb.Worksheets("Losing Trades Data")
ws.Rows.Clear
Set ws = wb.Worksheets("Data")
y = 65536
With ws
' korrekte Spalte verwenden - war vorher 9, jetzt 11 !
' Ursache ? - evtl. ausgeblendete Spalten nicht mitgezählt ?
If .Cells(.Rows.Count, 9) = "" Then y = .Cells(.Rows.Count, 9).End(xlUp).Row
Set rng = .Range(.Cells(1, 9), .Cells(y, 9))
End With
i = 1
j = 1
For Each r In rng
Select Case r.Value
Case Is > 0
r.EntireRow.Copy (wb.Worksheets("Winning Trades Data").Cells(i, 1))
i = i + 1
Case Is <= 0
r.EntireRow.Copy (wb.Worksheets("Losing Trades Data").Cells(j, 1))
j = j + 1
Case Else
' do nothing
End Select
Next r
End Sub
Wie muss ich vorgehen, damit sich ALLE Charts aktualisieren?
Was löst diesen Konflikt aus?
Ich hoffe ihr könnt mir helfen,
Daniel