Diagramme in Excel beschriften

Dieses Thema Diagramme in Excel beschriften im Forum "Microsoft Office Suite" wurde erstellt von simdipl, 5. Juli 2005.

Thema: Diagramme in Excel beschriften Hallo zusammen, Ich bin mal wieder an einem Punkt wo ich selber keinen Rat mehr weiß ich hoffe ihr habt aber noch...

  1. Hallo zusammen,

    Ich bin mal wieder an einem Punkt wo ich selber keinen Rat mehr weiß ich hoffe ihr habt aber noch eine Idee.

    Und zwar möchte ich mit Hilfe eines Makro Mehrere Diagramme erstellen. Alle Diagramme sollen auf einem neuen sheet liegen.
    Das alles ist nicht schwer gewesen zum laufen zu bringen, aber nun noch hinzubekommen das jeder Graph den Namen der Spalte trägt aus der er die Daten genommen hat. Das bringt mich zur Verzweiflung.
    Bis jetzt macht mein Makro da nur an die Stelle der Beschriftung die Zellen Zuweisung hin und nicht den Stirng der an dieser Stelle steht.

    Hier kommt nun auch noch der Code.

    For j = 3 To 28
    strTab = Tabelle & i
    Sheets(strTab).Select

    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets(strTab).Range(B3:C & CStr(Dauer)), PlotBy:=xlColumns

    For i = 1 To Messungen

    strTab = Tabelle & (Messungen + 1 - i) & !

    ->Eintragen des Namens
    ActiveChart.SeriesCollection(i).Name = = & strTab & R1C3

    ActiveChart.SeriesCollection(i).XValues = = & strTab & R3C2:R & Dauer & C2
    ->Zuweisung der Werte
    ActiveChart.SeriesCollection(i).Values = = & strTab & R1C & j & :R & Dauer & C & j
    ->Hinzufügen einer Reihe im Diagramm
    ActiveChart.SeriesCollection.NewSeries
    Next

    ActiveChart.Location Where:=xlLocationAsObject, Name:=Tabelle & Messungen + 2
    With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = = & strTab & R1C & 1 + j
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    ActiveChart.HasLegend = False


    End With


    Ich hoffe ihr könnt mir helfen

    MfG

    Simdipl
     
  2. Hallo simdipl,

    ich hab mal versucht in dem Fragment das benötigte einzubauen. (ist mit->### gekennzeichnet)

    Gruß Matjes :)
    Code:
    Dim ws As Worksheet->###
    
    For j = 3 To 28
        strTab = Tabelle & i
        Sheets(strTab).Select
        
        Charts.Add
        ActiveChart.ChartType = xlLine
        ActiveChart.SetSourceData Source:=Sheets(strTab).Range(B3:C & CStr(Dauer)), PlotBy:=xlColumns
      
       For i = 1 To Messungen
      
       strTab = Tabelle & (Messungen + 1 - i)->###
       
       'Eintragen des Namens
        ActiveChart.SeriesCollection(i).Name = Worksheets(strTab).Range(R1C3).Value->###
        
        ActiveChart.SeriesCollection(i).XValues = Worksheets(strTab).Range(R3C2:R & Dauer & C2)->###
       ->Zuweisung der Werte
        ActiveChart.SeriesCollection(i).Values = Worksheets(strTab).Range(R1C & j & :R & Dauer & C & j)->###
       ->Hinzufügen einer Reihe im Diagramm
        ActiveChart.SeriesCollection.NewSeries
         Next
       
        ActiveChart.Location Where:=xlLocationAsObject, Name:=Tabelle & Messungen + 2
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = Worksheets(strTab).Range(R1C & (1 + j))->###
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
             ActiveChart.HasLegend = False
            
            
        End With
    
    
    ......
    
    
        set ws = Nothing->###
    
     
  3. hi Matjes,

    Ich habe die Änderungen vorgenommen aber leider bleibt nun das Makro hängen mit einem Laufzeitfehler. Es handelt sich dabei um den 1004 Anwendungs- oder objektdefinierter Fehler, der in der Zeile mit der Namensgebung auftritt.

    hier nochmals die Zeile Code:
    ActiveChart.SeriesCollection(i).Name = Worksheets(strTab).Range(R1C3).Value

    Hast du eine Idee warum, und wie ich dies beheben kann?

    und dann was bedeutet eigentlich die Dim ws. Ich habe es eingefügt aber sehe keinen nutzen darin

    Gruß simdipl
     
  4. Hallo simdipl,

    das mit ws ist nur reingerutscht. kannst Du löschen.

    zu
    Welchen Wert haben i und strTab, wenn der Fehler auftritt ?

    Gruß Matjes :)
     
  5. hi Matjes

    ich habe den Code wieder zurück gesetzt weil so läuft es bis auf die eigentliche Problemzeile die ganz unten im Code. Es ist die Zeile wo das Diagramm seinen Titel zu gewisen bekommt. die Funktioniert überhaupt nicht.

    hier nochmals die Zeile mit dem Problem:
    .ChartTitle.Characters.Text = Worksheets(strTab).Range(R1C & CStr(j)).Value
    Wie Du siehst habe ich es auch schonmal versucht es um zuändern aber es läuft nichts.


    Zu deiner Frage i bleibt immer bei 50 hängen und Messungen ist 50


    Wenn Du noch ne idee hast wäre das super

    Gruß

    Simdipl
     
  6. hi Matjes

    habe wohl etwas verkehrt gelesen i = 51 und Tabelle ist Tabelle1 wenn der Code hängt

    Gruß

    Simdipl
     
  7. Hallo simdipl,

    versuchs mal so
    Code:
    .ChartTitle.Characters.Text = Worksheets(Tabelle & (Messungen + 1 - i) ).Cells(1,j).Value
    Gruß Matjes  :)
     
  8. Hi Matjes

    ich habe das Problem gelöst bekommen. Zwar nicht auf die ganz feine Art aber es geht nun.
    Ich erzeuge erst die Diagramme und weise dann erst den Diagrammen Namen zu. Leider ist mein Makro nicht mehr ganz Variabel aber er läuft wenigstens.

    Ich habe aber noch ein Problem mit einem Makto vielleicht kannst Du mir dabei auch helfen und zwar kopiere ich mir Daten in eine Tabelle zusammen. Anschließend runde ich die Werte auf 2Stellen hinterm Komma. Danach stelle ich ein paar Berechnungen an. Bei diesen Berechnungen greift mein Makro allerdings auf die genauen Werte die in der Zelle liegen zu und nicht auf die Gerundeten. Weißt Du wie ich meinen Makro ändern muß das er funktioniert?

    Hier ist auch mal der Code den ich dir gerade beschireben habe.
    (Das zusammen kopieren habe ich dir mal nur an einem Wert dargestellt.)


    Range(H48).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    Range(AB24:AC24).Select
    Application.CutCopyMode = False
    Selection.Copy

    Range(H49).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False


    ->Auf 2 Stellen hinterm Komma runden
    Windows(Capture.xls).Activate
    Sheets(Tabelle51).Select
    Windows(Capture.xls).Activate
    Range(D47:I49).Select
    Selection.NumberFormat = 0.00
    ->Range(D20).Select
    ->Selection.NumberFormat = 0.00

    ->ERstellen der Prozente
    Range(D50).Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = =(R[-3]C-R[-1]C)/R[-1]C*100
    Range(D51).Select
    ActiveCell.FormulaR1C1 = =(R[-3]C-R[-2]C)/R[-2]C*100
    Range(D50:D51).Select
    Selection.AutoFill Destination:=Range(D50:I51), Type:=xlFillDefault
    Range(D50:I51).Select
    Range(D47:I51).Select
    Selection.Cut


    Ich hoffe Du hast eine Idee

    Gruß

    Simdipl
     
  9. Hallo simdipl,

    NumberFormat ist nur die Darstellung der Zellinhalte. Um die Werte tatsächlich zu runden, könntest du nach
    Selection.NumberFormat = 0.00
    folgenden Code einfügen:
    Code:
        Dim Zelle As Range, myBereich As Range, l_Wert As Double
        Set myBereich = Selection
        For Each Zelle In myBereich
          
          l_Wert = Zelle.Value->Wert der Zelle holen
          
         ->auf 2 Nachkommastellen runden
          l_Wert = ((l_Wert * 100) \ 1) / 100
          
          Zelle.Value = l_Wert->Wert zurückschreiben
        Next
       ->Aufräumen
        Set myBereich = Nothing: Set Zelle = Nothing
    Gruß Matjes :)
     
Die Seite wird geladen...

Diagramme in Excel beschriften - Ähnliche Themen

Forum Datum
Legende in Excel-Diagrammen Microsoft Office Suite 16. Juli 2009
Legende in Excel-Diagrammen Windows XP Forum 14. Juni 2009
Erstellung eines Excel-Diagrammes mit umgekehrten Werten! Windows XP Forum 20. Aug. 2007
Excel: Reihenfolge von Diagrammebene und Graphikelementen Windows XP Forum 1. Aug. 2007
Excel: Fehlerwerte verzerren Diagramme Microsoft Office Suite 24. Apr. 2006