Diagramm erzeugen mit variablem Ende der Datenreih

Bild

Betrifft: Diagramm erzeugen mit variablem Ende der Datenreih
von: Fabian
Geschrieben am: 30.07.2015 13:55:42

Hallihallo,
habe vor kurzem frisch gestartet mit der VBA-Programmierung und stehe nun vor einem Syntax-Problem:
Ich möchte gern im Laufe meines Programms ein Diagramm erstellen, aus einer Datenreihe werden die x-Werte entnommen (hier: Spalte A), aus einer anderen Datenreihe die Y-Werte (hier Spalte E). Mittels Makro habe ich mir angeschaut, wie der Code dafür ungefähr aussehen müsste:
Range("A2:A36,E2:E36").Select
Range("E2").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range( _ "Tabelle1!$A$2:$A$36;Tabelle1!$E$2:$E$36")
Nun möchte ich in der ersten und letzten Zeile gern das Ende der Bereiche modifizieren. Die Datenreihen gehen nämlich nicht immer bis zur Zeile 36, sondern in meinem Fall bis zur Zeile j (der Wert wird vorher im Programm ermittelt). Zusatzfragen: Wenn die Datenreihen bis zur Zeile j-1 gehen sollen, kann man dann das einfach so einsetzen? Was macht Range("E2").Activate?
Ich hoffe, ihr könnt mir helfen!
Liebe Grüße
Fabian

Bild

Betrifft: AW: Diagramm erzeugen mit variablem Ende der Datenreih
von: Beverly
Geschrieben am: 30.07.2015 15:23:57
Hi Fabian,
der Makrorekoder zeichnet JEDEN Schritt auf und vor dem Erstellen des Diagramms wurde eben Zelle E2 aktiviert.
So könnte der Code aussehen:

Sub DiaErstellen()
    Dim lngLetzte As Long
    ' letzte belegte Zeile in Spalte A ermitteln
    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, _
        Rows.Count)
    With ActiveSheet.Shapes.AddChart(0, 0, 0, 0).Chart
        .ChartType = xlLine
        With .SeriesCollection.NewSeries
            .XValues = Range(Cells(2, 1), Cells(lngLetzte, 1))
            .Values = Range(Cells(2, 5), Cells(lngLetzte, 5))
        End With
        With .Parent
            .Top = 0
            .Left = 0
            .Width = 450
            .Height = 250
        End With
    End With
End Sub




Bild

Betrifft: AW: Diagramm erzeugen mit variablem Ende der Datenreih
von: Fabian
Geschrieben am: 31.07.2015 11:51:00
Hallo Karin,
danke für die schnelle Antwort :)
Es klappt alles soweit, außer wenn ich "IngLetzte" durch meine eigene Variable ersetze.
Ich habe den Zeilenindex der ersten freien Zelle so ermittelt:


Do While Test = False
        If IsEmpty(Cells(j, 2).Value) = True Then
        Exit Do
        Else
        j = j + 1
        End If
    Loop

Das Erstellen des Diagramms erfolgt dann im selben Sub, vorher wird noch j = j - 1 gerechnet.
Fehlermeldung: Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler. Beim Debuggen landet er dann als erstes in der Zeile ".XValues...".
Was sind das für Werte, die unter ".Parent" für Top, Left etc. eingegeben werden? Sind das feste Größen für das Diagramm? Wenn ja, kann ich die auch in Abhängigkeit von den x- und y-Werten setzen (damit dass Diagramm nie zu groß oder zu klein ist)?

Bild

Betrifft: AW: Diagramm erzeugen mit variablem Ende der Datenreih
von: Fabian
Geschrieben am: 31.07.2015 12:04:41
Ich habe bemerkt, dass mein Beispiel etwas kurz ausgefallen ist.
Hier mal ein ausführlicheres Minimalbeispiel:


Sub Prognose()
    j As Long, Test As Boolean
    
    j = 2 'Ist den Eintragungen in der Tabelle geschuldet
    Do While Test = False
        If IsEmpty(Cells(j, 1).Value) = True Then
        Exit Do
        Else
        j = j + 1
        End If
    Loop


Bild

Betrifft: AW: Diagramm erzeugen mit variablem Ende der Datenreih
von: Beverly
Geschrieben am: 31.07.2015 13:09:28
Hi,
also bei mir ist lngLetzte (nicht IngLetzte!) die letzte belegte Zeile in Spalte A und damit gibt es in meinem Code keinen Fehler. Ich nehme deshalb an, dass du kein 'Option Expplicit' verwendest und deshalb nicht "angemeckert" wird, dass deine Variable nicht definiert/dimensioniert ist, nicht belegt wird und somit 0 bzw. leer ist.
Die Angaben unter .Parent sind - wie du richtig geschlussfolgert hast - die Positions- und Größenangaben für das Diagrammobjekt.




 Bild

Beiträge aus den Excel-Beispielen zum Thema "Diagramm erzeugen mit variablem Ende der Datenreih"