Excel stürzt ab bei Codeausführung
Herbert
ich habe folgenden Code geschrieben, um ein Diagramm zu erstellen. Vorher werden über Inputbox noch Werte für das Diagramm abgefragt. Am Ende stürzt Excel immer ab.
Sub Diagramme_einzeln() 'Einzeldiagramm erstellen
Dim i As Integer 'Startzeile, Item
Dim n As Integer 'Jahreszahl des Diagrammbeginns
Dim x As String 'Spaltenbuchstabe, in der Jahreszahl steht
Dim spalte As Integer 'Spalte, in der Jahreszahl steht
Dim k As Integer 'Itemnummer
On Error GoTo ENDE
k = InputBox("Für welches Item soll das Diagramm erzeugt werden?", "Einzeldiagramm erzeugen", 1) _
n = InputBox("Mit welchem Jahr soll das Diagramm beginnen?", "Startjahr wählen", 2006)
Select Case n 'Jahreszahl in Spalte umwandeln
Case 2003: x = "M"
Case 2004: x = "N"
Case 2005: x = "O"
Case 2006: x = "P"
Case 2007: x = "Q"
Case 2008: x = "R"
Case 2009: x = "S"
Case 2010: x = "T"
End Select
spalte = n - 1990 'Spaltennummer der Jahreszahl
i = k + 13 'Zeile des Items
Sheets("Germany").Select
ActiveSheet.Unprotect
ActiveSheet.Shapes.AddChart.Select 'Balkendiagramm erzeugen
ActiveChart.SetSourceData Source:=Range(Cells(spalte, i), Cells(20, i))
ActiveChart.SeriesCollection(1).XValues = "='Germany'!" & x & "1:T1" 'Werte der X-Achse
ActiveChart.SeriesCollection(1).Name = "=""Germany""" 'Reihenname
ActiveChart.SeriesCollection(1).Values = "='Germany'!" & x & CStr(i) & ":T" & CStr(i) ' _
Werte des Items
ActiveChart.SeriesCollection.NewSeries 'neue Reihe
ActiveChart.SeriesCollection(2).Name = "=""Overall""" 'Vergleich mit Global
ActiveChart.SeriesCollection(2).Values = "='Overall'!" & x & CStr(i) & ":T" & CStr(i)
ActiveChart.SeriesCollection(2).XValues = "='Germany'!" & x & "1:T1"
ActiveChart.ApplyChartTemplate ( _
"C:\Users\XXX\AppData\Roaming\Microsoft\Templates\Charts\Diagramm1.crtx") 'Template für
Layout verwenden
ActiveChart.SetElement (msoElementChartTitleAboveChart) 'Diagrammtitel einfügen
ActiveChart.ChartTitle.Text = Range("L" & CStr(i)) 'Diagrammtitel ist Itemname
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=n & "-Item " & Range("J" & CStr(i))
'Diagramm in neues Sheet verschieben, Name ist Jahr-Itemnummer
ENDE:
Sheets("Germany").Protect
End Sub
Der Befehl am Ende (.Protect) bringt Excel zum Absturz und ich weiß nicht, warum. In einem anderen ähnlichen Code funktioniert es einwandfrei.Vielen Dank für einen Tip.