Collapse column

Autor Thema: Office 2007: VBA variabler Diagrammbereich???  (Gelesen 2182 mal)

Offline André H.

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2010
Office 2007: VBA variabler Diagrammbereich???
« am: November 29, 2014, 14:56:48 Nachmittag »
 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é

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1.063
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Antw:Office 2007: VBA variabler Diagrammbereich???
« Antwort #1 am: November 30, 2014, 09:44:44 Vormittag »
Hallo André,

um Texte miteinander zu verknüpfen, kannst Du den Operator & verwenden, bei den anderen Zeilen dann genauso:

.SeriesCollection(1).Values = "='Kanal1'!$B$2:$B$" & CStr(i)

CStr() wandelt Dir das i (als Integer) deklariert in einen Text um. Theoretisch gesehen kannst Du auch CStr()
weglassen, dann würde VBA das automatisch machen.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) from 01/2011 - 06/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline André H.

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2010
Antw:Office 2007: VBA variabler Diagrammbereich???
« Antwort #2 am: November 30, 2014, 15:02:22 Nachmittag »
Danke für deine Hilfe, so funktioniert es ;-).
ibt es zusätzlich noch einen Befehl über den ich einzelne Datenreihen ausblenden bzw. einblenden kann??

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.