Hallo liebes Forum,
ich bin dabei ein Programm zu schreiben, wo unter anderem, ein Diagramm automatisch erstellt werden soll. Da ich leider keinen Range-Bereich nutzen kann und stattdessen einzelne Werte verwenden muss, möchte ich diese Werte gezielt in ein Array schreiben und dieses dann für das Diagramm verwenden. Hier folgender Auszug von meiner Entwicklung bisher:
Der Compiler bleibt hier hängen:
Als Fehler spuckt er mir:
Laufzeitfehler '1004': Der Parameter ist ungültig.
aus...
Anscheinend hat er ein Problem dass ich hier Grafik2.SeriesCollection(1).Values ein Array als Werte zuweise. Das müsste aber laut Internet-Recherche auf jeden Fall gehen! - Deshalb verstehe ich ehrlich gesagt nicht, warum er das nicht mag. Die Arrays für die Werte sind übrigens auch alle korrekt befüllt (siehe Screenshot) - also Werte müsste er auch zur Verfügung haben.
Kann mir einer von euch vielleicht weiterhelfen und mir erklären warum er mir hier einen Fehler ausgibt?
Vielen Dank und liebe Grüße!
*Code-Tags korrigiert*
ich bin dabei ein Programm zu schreiben, wo unter anderem, ein Diagramm automatisch erstellt werden soll. Da ich leider keinen Range-Bereich nutzen kann und stattdessen einzelne Werte verwenden muss, möchte ich diese Werte gezielt in ein Array schreiben und dieses dann für das Diagramm verwenden. Hier folgender Auszug von meiner Entwicklung bisher:
Visual Basic-Quellcode
- '-------------------------------------------------------------------------
- ' - Neues Workbook generieren... -
- '-------------------------------------------------------------------------
- Dim wbMutter As Workbook
- Dim wbNeu As Workbook
- Dim wsAusgabeNeu As Worksheet
- Dim wsTabelle1Neu As Worksheet
- 'kopiere Ausgabe Worksheet von Quelldatei(wbMutter) in sich neu-generierendes Workbook...
- Set wbMutter = ThisWorkbook
- Set wbNeu = Workbooks.Add
- wbMutter.Worksheets(3).Copy before:=wbNeu.Worksheets(wbNeu.Worksheets.Count)
- '-------------------------------------------------------------------------
- ' - Erstellung der Charts....... -
- '-------------------------------------------------------------------------
- 'mache Tabelle "Ausgabe" im neuen Worksheet über Variable adressierbar...
- Set wsAusgabeNeu = wbNeu.Worksheets("Ausgabe")
- Set Grafik1 = wbNeu.Charts.Add(after:=wsAusgabeNeu)
- 'Grafik: Belegte Betten - Monatsdurchschnitt Klinik gesamt
- For indx = 1 To UnikateJahreszahlenSack.Count
- UnikateJahreszahlenSackItem = UnikateJahreszahlenSack.Item(indx)
- Grafik1.SeriesCollection.NewSeries
- Grafik1.SeriesCollection(indx).Name = UnikateJahreszahlenSackItem
- ZeilenMax_Tab3 = wsAusgabeNeu.Cells(Rows.Count, 3).End(xlUp).Row
- SpaltenMax_Tab3 = wsAusgabeNeu.Cells(Columns.Count, 2).End(xlUp).Row + 1
- For indx2 = 1 To ZeilenMax_Tab3
- indx3 = indx2 - 1
- If indx2 > 1 Then
- If wsAusgabeNeu.Cells(indx2, 3) = "gesamt" And wsAusgabeNeu.Cells(indx3, 2) = UnikateJahreszahlenSackItem Then
- Grafik1.SeriesCollection(indx).Values = wsAusgabeNeu.Range(wsAusgabeNeu.Cells(indx2, 5), wsAusgabeNeu.Cells(indx2, SpaltenMax_Tab3))
- Grafik1.SeriesCollection(indx).XValues = wsAusgabeNeu.Range(wsAusgabeNeu.Cells(2, 5), wsAusgabeNeu.Cells(2, SpaltenMax_Tab3))
- Else
- End If
- Else
- End If
- Next
- Next
- 'Grafik formatieren...
- Grafik1.ApplyLayout (3)
- Grafik1.ChartTitle.Text = "Alle Kliniken, belegte Betten - Monatsdurchschnitt:" & vbCrLf & UnikateJahreszahlenSack.Item(1) & "-" & UnikateJahreszahlenSack.Item(UnikateJahreszahlenSack.Count)
- 'Grafik: Belegte Betten - Monatsdurchschnitt Klinik gesamt
- Set wsTabelle1Neu = wbNeu.Worksheets("Tabelle1")
- Set Grafik2 = wbNeu.Charts.Add(before:=wsTabelle1Neu)
- ReDim Array1DFürDiagrammXWerte(1 To UnikateJahreszahlenSack.Count)
- ReDim Array1DFürDiagrammYWerte(1 To UnikateJahreszahlenSack.Count)
- For indx = 1 To UnikateJahreszahlenSack.Count
- UnikateJahreszahlenSackItem = UnikateJahreszahlenSack.Item(indx)
- 'Befüllung der Y-Werte...
- For indx2 = 1 To ZeilenMax_Tab3
- indx3 = indx2 - 1
- If indx2 > 1 Then
- If wsAusgabeNeu.Cells(indx2, 3) = "gesamt" And wsAusgabeNeu.Cells(indx3, 2) = UnikateJahreszahlenSackItem Then
- Array1DFürDiagrammYWerte(indx) = wsAusgabeNeu.Cells(indx2, 4)
- Else
- End If
- Else
- End If
- Next
- Array1DFürDiagrammXWerte(indx) = UnikateJahreszahlenSackItem
- Next
- 'Grafik2.SeriesCollection(1).Name = wsAusgabeNeu.Cells(3, 1)
- Grafik2.SeriesCollection(1).Values = Array1DFürDiagrammYWerte
- Grafik2.SeriesCollection(1).XValues = Array1DFürDiagrammXWerte
- 'Schalte automatische Berechnung wieder ein...
- Application.Calculation = xlCalculationAutomatic
- 'Schalte automatische Bildschirmaktualisierung wieder ein...
- Application.ScreenUpdating = True
Der Compiler bleibt hier hängen:
Als Fehler spuckt er mir:
Laufzeitfehler '1004': Der Parameter ist ungültig.
aus...
Anscheinend hat er ein Problem dass ich hier Grafik2.SeriesCollection(1).Values ein Array als Werte zuweise. Das müsste aber laut Internet-Recherche auf jeden Fall gehen! - Deshalb verstehe ich ehrlich gesagt nicht, warum er das nicht mag. Die Arrays für die Werte sind übrigens auch alle korrekt befüllt (siehe Screenshot) - also Werte müsste er auch zur Verfügung haben.
Kann mir einer von euch vielleicht weiterhelfen und mir erklären warum er mir hier einen Fehler ausgibt?
Vielen Dank und liebe Grüße!
*Code-Tags korrigiert*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()