Moin Thorsten,
ich direkt noch einmal: Da ich ja nun herausgefunden habe, dass der erste Sub mit dem Fehler zusammenhängt, habe ich dort zeilenweise Anweisungen auskommentiert um zu schauen, ob eine spezielle Anweisung mit dem Fehler in Verbindung steht. Und tatsächlich:
call diagrammformat ist der Übeltäter. Lasse ich das weg, läuft alles fehlerfrei durch. Nun habe ich mir den Sub angesehen und habe nun wirklich keinen blassen Schimmer, was dort zu diesem Fehler führt. Prinzipiell habe ich 30 Diagramme in meinem Exceldokument, und dieser sub passt die Skalierung der Haupt- und Zweitachse an (Min, Max, Unit). Ich kann sie nicht auf Auto lassen, weil Min=0 sein muss und die Zweitachse in Abhängigkeit zur Hauptachse skaliert sein muss.
Hat jemand einen Tipp, warum die Ausführung dieses Subs im nächsten Sub den pdf-Export-Error verursacht!? Bzw: was könnte ich versuchen im Code zu ändern?
Der Sub-Code ist leider langer Spaghetti-Code:
Sub diagrammformat()
Dim i, j, intSheetcount, startsheet As Integer
Dim max, unit As Double
Dim liste(13), liste2(0), liste3(12) As String
liste(0) = "Diagramm 15"
liste(1) = "Diagramm 1"
liste(2) = "Diagramm 2"
liste(3) = "Diagramm 3"
liste(4) = "Diagramm 4"
liste(5) = "Diagramm 5"
liste(6) = "Diagramm 6"
liste(7) = "Diagramm 7"
liste(8) = "Diagramm 8"
liste(9) = "Diagramm 9"
liste(10) = "Diagramm 10"
liste(11) = "Diagramm 11"
liste(12) = "Diagramm 12"
liste(13) = "Diagramm 13"
liste2(0) = "Diagramm M1"
liste3(0) = "Diagramm M2"
liste3(1) = "Diagramm M3"
liste3(2) = "Diagramm M4"
liste3(3) = "Diagramm M5"
liste3(4) = "Diagramm M6"
liste3(5) = "Diagramm M7"
liste3(6) = "Diagramm M8"
liste3(7) = "Diagramm M9"
liste3(8) = "Diagramm M10"
liste3(9) = "Diagramm M11"
liste3(10) = "Diagramm M12"
liste3(11) = "Diagramm M13"
liste3(12) = "Diagramm M14"
intSheetcount = ThisWorkbook.Sheets.Count
For i = 0 To UBound(liste)
max = Worksheets("tableD").Cells(2 + i * 2, 29).Value
If Worksheets("tableD").Cells(2 + i * 2, 29).Value < 700 Then unit = 100 Else unit = (Worksheets("tableD").Cells(2 + i * 2, 29).Value \ 700) * 100
ThisWorkbook.Sheets("graphD").ChartObjects(liste(i)).Activate
With ActiveChart.Axes(xlValue)
.CrossesAt = 0
.MinimumScale = 0
.MaximumScale = max
.MajorUnit = unit
End With
With ActiveChart.Axes(xlValue, xlSecondary)
.CrossesAt = 0
.MinimumScale = 0
.MaximumScale = max / ThisWorkbook.Sheets(1).Cells(3, 2)
If i = 0 Then .MajorUnit = 10 Else .MajorUnit = 2
End With
Next
For i = 0 To UBound(liste2)
max = Worksheets("tableM").Cells(3 + i, 8).Value
If Worksheets("tableM").Cells(3 + i, 8).Value < 700 Then unit = 100 Else unit = (Worksheets("tableM").Cells(3 + i, 8).Value \ 700) * 100
ThisWorkbook.Sheets("graphD").ChartObjects(liste2(i)).Activate
With ActiveChart.Axes(xlValue)
.CrossesAt = 0
.MinimumScale = 0
.MaximumScale = max
.MajorUnit = unit
End With
With ActiveChart.Axes(xlValue, xlSecondary)
.CrossesAt = 0
.MinimumScale = 0
.MaximumScale = max / ThisWorkbook.Sheets(1).Cells(3, 2)
If Worksheets("tableM").Cells(3 + i, 9).Value >= 700 Then .MajorUnit = (Worksheets("tableM").Cells(3 + i, 9).Value \ 700) * 100 Else .MajorUnit = 100
'If i = 0 Then .MajorUnit = 100
End With
Next
For j = 1 To intSheetcount
If Right(ThisWorkbook.Sheets(j).Name, 2) = "HM" Then
startsheet = j
Exit For
End If
Next
For i = 0 To UBound(liste3)
max = Worksheets(startsheet + 3 * i).Cells(2, 11).Value
If Worksheets(startsheet + 3 * i).Cells(2, 11).Value < 700 Then unit = 100 Else unit = (Worksheets(startsheet + 3 * i).Cells(2, 11).Value \ 700) * 100
ThisWorkbook.Sheets("graphM").ChartObjects(liste3(i)).Activate
With ActiveChart.Axes(xlValue)
.CrossesAt = 0
.MinimumScale = 0
.MaximumScale = max
.MajorUnit = unit
End With
With ActiveChart.Axes(xlValue, xlSecondary)
.CrossesAt = 0
.MinimumScale = 0
.MaximumScale = max / ThisWorkbook.Sheets(1).Cells(3, 2)
If Worksheets(startsheet + 3 * i).Cells(2, 12).Value >= 700 Then .MajorUnit = (Worksheets(startsheet + 3 * i).Cells(2, 12).Value \ 700) * 100 Else .MajorUnit = 25
'If i = 0 Then .MajorUnit = 100
End With
Next
End Sub