Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Makro um Diagramm zu zeichen
11.08.2021 01:35:27 Mb
NotSolved
11.08.2021 02:08:43 Gast64813
NotSolved
11.08.2021 22:29:00 Mb
NotSolved

Ansicht des Beitrags:
Von:
Mb
Datum:
11.08.2021 01:35:27
Views:
703
Rating: Antwort:
  Ja
Thema:
VBA Makro um Diagramm zu zeichen

Hi,

folgendes Drama...

Ich habe ein Makro geschrieben dass aus ein paar Startwerten eine Kurvenschaar generieren soll. Das Makro produziert die Werte und füllt sie in die Tabelle ein, soweit funktioniert das ganze. Im zweiten Schritt soll aus diesen Werten eine Kurvenschaar generiert werden. Jetzt ist es so dass wenn ich eine kritische Anzahl an Werten überschreite, Das Makro plötzlich mit dem Laufzeitfehler 1004 abbricht. Fehlermeldung "Die Values-Eigenschaft des Series Objektes kann nicht festgelegt werden". Ich habs soweit ausgetestet und herumgedoktert dass ich denke es scheitert am Datentyp des Series Objektes. Ich vermute dass die Variable 'ActiveChart.SeriesCollections.Values' schlicht und ergreifend zu klein ist um mein Variant/Double Array hinein zu schreiben. Kann man das irgendwie umgehen? Das Double Array wird je nach Kurve mit unterschiedlich vielen Daten bestückt und nach abschluss der Schleife(nach dem die Kurve gezeichnet wurde), wird es mit ReDim neu dimensioniert um die neuen Werte aufnehmen zu können.

Langsam bin ich richtig ratlos, Ich hab es schon mit Einfügen einer Range statt über das Array probiert, aber da macht der nur Müll und nimmt die X-Werte linear steigend mit Schrittweite 1 an, was leider völlig unbrauchbar ist. Vielleicht fällt euch ja etwas ein.


Sub Zeichnen()

ThisWorkbook.Worksheets(2).Activate
ActiveSheet.ChartObjects.Delete


Dim i As Long
Dim l As Long
Dim reihe As Range

Dim Xreihe() As Variant
Dim Yreihe() As Variant

i = 0
l = 0
'Set reihe = Worksheets(1).Range("M5:M10")

Dim Dia As ChartObject
Dim Diag As Chart
Dim Cname As String
Dim Dname As String



Dim anz As Long


Set Dia = ActiveSheet.ChartObjects.Add(10, 210, 560, 400)           'hier chart generieren
    Cname = Dia.Name
Set Diag = Dia.Chart
    Diag.ChartType = xlXYScatterLinesNoMarkers
    Dname = Diag.Name
    Diag.HasDataTable = False
    
    

    
    For i = 1 To 10 Step 1 'Arrays befüllen
    ReDim Xreihe(1)
    ReDim Yreihe(1)
        ThisWorkbook.Worksheets(1).Activate
        anz = ActiveSheet.Cells(2, 11 + (2 * i)) - 1
        'Set reihe = Range(ActiveSheet.Cells(5, 11 + (2 * i)), ActiveSheet.Cells(5 + anz, 11 + (2 * i)))
        ReDim Xreihe(anz)
        ReDim Yreihe(anz)
        
        For l = 0 To anz Step 1
        Xreihe(l) = Round(ActiveSheet.Cells(l + 5, 12 + (2 * i)), 2)
        Yreihe(l) = Round(ActiveSheet.Cells(l + 5, 11 + (2 * i)), 2)
        Next l
        
        
    
    'Kurven im Chart zeichnen
    ThisWorkbook.Worksheets(2).Activate
    ActiveSheet.ChartObjects(Cname).Activate
    ActiveChart.ChartArea.Select
    If i < 2 Then
    
    ActiveChart.SetSourceData Source:=Worksheets(1).Range("A1"), PlotBy:=xlRows
    End If
    
    ActiveChart.SeriesCollection.NewSeries
    
    'ActiveChart.SeriesCollection.Add _
    'Source:=reihe
    ActiveChart.SeriesCollection(i).XValues = Xreihe
    ActiveChart.SeriesCollection(i).Values = Yreihe
    ActiveChart.SeriesCollection(i).Name = CStr(i)
    
Next i
    
    
    
   ThisWorkbook.Worksheets(2).Activate
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Makro um Diagramm zu zeichen
11.08.2021 01:35:27 Mb
NotSolved
11.08.2021 02:08:43 Gast64813
NotSolved
11.08.2021 22:29:00 Mb
NotSolved