Diagramme in Excel beschriften

  • #1
S

simdipl

Mitglied
Themenersteller
Dabei seit
25.05.2005
Beiträge
23
Reaktionspunkte
0
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
hier nochmals die Zeile Code:
    ActiveChart.SeriesCollection(i).Name = Worksheets(strTab).Range(R1C3).Value

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,

   ->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
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 :)
 
Thema:

Diagramme in Excel beschriften

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben