Thema Datum  Von Nutzer Rating
Antwort
Rot VBA variabler Diagrammbereich???
29.11.2014 14:44:28 André
NotSolved
29.11.2014 17:35:30 Gast93869
NotSolved
29.11.2014 17:39:32 Gast93869
NotSolved
06.12.2014 10:57:50 Daniel
NotSolved

Ansicht des Beitrags:
Von:
André
Datum:
29.11.2014 14:44:28
Views:
977
Rating: Antwort:
  Ja
Thema:
VBA variabler Diagrammbereich???

Hallo,

 

ich hoffe ihr könnt mir weiter helfen. Ich habe folgendes Makro erstellt (funktionsfähig).

Ich habe alle Datenreihen einzeln erstellt da später vereinzelte Datenreihen nach Wunsch ausgeblendet werden sollen.

Mit dem unten geschriebenen Makro wird das Diagramm leider nur über einen festen Bereich erstellt. In dem Fall von Zeile 2- Zeile 36. Die Anzahl der Zeilen kann aber von Fall zu Fall variieren und ich würde deshalb gerne eine Variable "i" einsetzen.

Den Zähler dafür habe ich bereits. Dieser zählt alle beschriebenen Zeilen.





Sub DiagrammNeuesBlattErstellen()
Dim i As Integer
 
 
For i = 2 To 30
    If Sheets("Kanal1").Cells(i, 1).Value = "" Then
     i = i - 1
Exit For
End If
Next i
     
    ThisWorkbook.Charts.Add Before:=Worksheets("Kanal2")
        
    With ActiveChart
        .ChartType = xlLineMarkers
        .Name = "Diagramm1"
        
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Name = "='Kanal1'!$B$1"
        .SeriesCollection(1).Values = "='Kanal1'!$B$2:$B$36"
        .SeriesCollection(1).XValues = "='Kanal1'!$A$2:$A$36"
        
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "='Kanal1'!$C$1"
        .SeriesCollection(2).Values = "='Kanal1'!$C$2:$C$36"
        .SeriesCollection(2).XValues = "='Kanal1'!$A$2:$A$36"
        
        .SeriesCollection.NewSeries
        .SeriesCollection(3).Name = "='Kanal1'!$D$1"
        .SeriesCollection(3).Values = "='Kanal1'!$D$2:$D$36"
        .SeriesCollection(3).XValues = "='Kanal1'!$A$2:$A$36"
        
        .SeriesCollection.NewSeries
        .SeriesCollection(4).Name = "='Kanal1'!$F$1"
        .SeriesCollection(4).Values = "='Kanal1'!$F$2:$F$36"
        .SeriesCollection(4).XValues = "='Kanal1'!$A$2:$A$36"
        
        .SeriesCollection.NewSeries
        .SeriesCollection(5).Name = "='Kanal1'!$G$1"
        .SeriesCollection(5).Values = "='Kanal1'!$G$2:$G$36"
        .SeriesCollection(5).XValues = "='Kanal1'!$A$2:$A$36"
        
        
        .SeriesCollection(2).AxisGroup = 2
        .SeriesCollection(5).AxisGroup = 2
        .DisplayBlanksAs = xlInterpolated
        .ClearToMatchStyle
        .ChartStyle = 42
        .Legend.Position = xlTop
        
                
    End With
    
End Sub


Am liebsten würde ich die Variable "i" einfach anstatt der letzten Zeile (G36) in den unten vorgegeben Bereich schreiben.
Das ganze würde dann so aussehen.

Sub DiagrammNeuesBlattErstellen()
Dim i As Integer
 
 
For i = 2 To 30
    If Sheets("Kanal1").Cells(i, 1).Value = "" Then
     i = i - 1
Exit For
End If
Next i
     
    ThisWorkbook.Charts.Add Before:=Worksheets("Kanal2")
        
    With ActiveChart
        .ChartType = xlLineMarkers
        .Name = "Diagramm1"
        
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Name = "='Kanal1'!$B$1"
        .SeriesCollection(1).Values = "='Kanal1'!$B$2:$B$"i""
        .SeriesCollection(1).XValues = "='Kanal1'!$A$2:$A$"i""
        
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "='Kanal1'!$C$1"
        .SeriesCollection(2).Values = "='Kanal1'!$C$2:$C$"i""
        .SeriesCollection(2).XValues = "='Kanal1'!$A$2:$A$"i""
        
        .SeriesCollection.NewSeries
        .SeriesCollection(3).Name = "='Kanal1'!$D$1"
        .SeriesCollection(3).Values = "='Kanal1'!$D$2:$D$"i""
        .SeriesCollection(3).XValues = "='Kanal1'!$A$2:$A$"i""
        
        .SeriesCollection.NewSeries
        .SeriesCollection(4).Name = "='Kanal1'!$F$1"
        .SeriesCollection(4).Values = "='Kanal1'!$F$2:$F$"i""
        .SeriesCollection(4).XValues = "='Kanal1'!$A$2:$A$"i""
        
        .SeriesCollection.NewSeries
        .SeriesCollection(5).Name = "='Kanal1'!$G$1"
        .SeriesCollection(5).Values = "='Kanal1'!$G$2:$G$"i""
        .SeriesCollection(5).XValues = "='Kanal1'!$A$2:$A$"i""
        
        
        .SeriesCollection(2).AxisGroup = 2
        .SeriesCollection(5).AxisGroup = 2
        .DisplayBlanksAs = xlInterpolated
        .ClearToMatchStyle
        .ChartStyle = 42
        .Legend.Position = xlTop
        
                
    End With
    
End Sub

 

Leider ist die Sache nicht so einfach. Ich bin im Umgang mit Visual Basic blutiger Anfänger und würde mich über einige Denkanstöße freuen.

Danke im voraus

Gruß André


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 variabler Diagrammbereich???
29.11.2014 14:44:28 André
NotSolved
29.11.2014 17:35:30 Gast93869
NotSolved
29.11.2014 17:39:32 Gast93869
NotSolved
06.12.2014 10:57:50 Daniel
NotSolved