2017-09-15 4 views
0

Ich habe ein Problem beim Erstellen eines Makros, um Diagrammtitel und Achsentitel in meine Diagramme einzufügen. Ich habe online gesucht und Vorschläge mit ActiveChart.SetElement und ActiveChart.HasTitle = True, aber ich kann nicht arbeiten. Ich vermute, dass mein Problem in der Tatsache liegt, dass mehrere Grafiken gleichzeitig erstellt werden. Der Code, den ich verwende, ist unten:Diagrammtitel und Achsentitel zu gruppierten Diagrammen hinzufügen

Sub Plotting() 

Dim LR As Long 

LR = ActiveSheet.UsedRange.Rows.Count 

Dim aSheet As Worksheet 
For Each aSheet In ActiveWorkbook.Worksheets 'Strain vs Time 
With aSheet.Shapes.AddChart.Chart 
    .ChartType = xlXYScatterSmoothNoMarkers 
    .SetSourceData Source:=aSheet.Range(" '" & aSheet.Name & "'!B3:B15000,'" 
& aSheet.Name & "'!G3:G15000") 
End With 
Next 

For Each aSheet In ActiveWorkbook.Worksheets 'Stress vs Time 
    With aSheet.Shapes.AddChart.Chart 
    .ChartType = xlXYScatterSmoothNoMarkers 
    .SetSourceData Source:=aSheet.Range(" '" & aSheet.Name & "'!B3:B15000,'" 
& aSheet.Name & "'!H3:H15000") 
End With 
Next 

For Each aSheet In ActiveWorkbook.Worksheets 'Stress vs Strain 
With aSheet.Shapes.AddChart.Chart 
    .ChartType = xlXYScatterSmoothNoMarkers 
    .SetSourceData Source:=aSheet.Range(" '" & aSheet.Name & "'!G3:G15000,'" 
& aSheet.Name & "'!H3:H15000") 
End With 
Next 

End Sub 

Ich würde jede mögliche Hilfe schätzen, die ich erhalten kann.

Domenic löste das Anfangsproblem und jetzt habe ich Arbeitscode. Jetzt versuche ich, den Y-Achsentitel so umzuorientieren, dass er an die Achse angrenzt. Ich habe dies versucht:

For Each aSheet In ActiveWorkbook.Worksheets 'Strain vs Time 
    With aSheet.Shapes.AddChart.Chart 
     .ChartType = xlXYScatterSmoothNoMarkers 
     .SetSourceData Source:=aSheet.Range("'" & aSheet.Name & 
"'!B3:B15000,'" & aSheet.Name & "'!G3:G15000") 
    .SetElement msoElementChartTitleAboveChart 
    .SetElement msoElementPrimaryCategoryAxisTitleBelowAxis 
    .SetElement msoElementPrimaryValueAxisTitleAdjacentToAxis 
    .ChartTitle.Text = "MyChartTitle" 'change the chart title as desired 
    .Axes(Type:=xlCategory, AxisGroup:=xlPrimary).AxisTitle.Text = 
"MyCategoryAxisTitle" 'change the category axis title as desired 
    .Axes(Type:=xlValue, AxisGroup:=xlPrimary).AxisTitle.Text = 
"MyValueAxisTitle" 'change the value axis title as desired 
End With 
Next 

Wenn ich den Code ausführen I ‚Laufzeitfehler‚424‘erhalten: Objekt erforderlich, und die Zeile, in der Y-Achse gestattet wird hervorgehoben. Irgendeine Einsicht, was ich falsch mache?

Dies funktioniert, aber der Achsentitel wird horizontal.

Dies ist, was ich möchte, dass die Ausgabe im Idealfall aussieht.

Sample Chart

Antwort

0

Für Ihre erste ...

For Each aSheet In ActiveWorkbook.Worksheets 'Strain vs Time 
    With aSheet.Shapes.AddChart.Chart 
     .ChartType = xlXYScatterSmoothNoMarkers 
     .SetSourceData Source:=aSheet.Range("'" & aSheet.Name & "'!B3:B15000,'" & aSheet.Name & "'!G3:G15000") 
     .SetElement msoElementChartTitleAboveChart 'change the position as desired 
     .SetElement msoElementPrimaryCategoryAxisTitleBelowAxis 'change the position as desired 
     .SetElement msoElementPrimaryValueAxisTitleVertical 'change the position as desired 
     .ChartTitle.Text = "MyChartTitle" 'change the chart title as desired 
     .Axes(Type:=xlCategory, AxisGroup:=xlPrimary).AxisTitle.Text = "MyCategoryAxisTitle" 'change the category axis title as desired 
     .Axes(Type:=xlValue, AxisGroup:=xlPrimary).AxisTitle.Text = "MyValueAxisTitle" 'change the value axis title as desired 
    End With 
Next 

Das gleiche würde für andere, die gelten.

Hoffe, das hilft!

+0

Es hat super funktioniert! Müssen SetElements definiert werden, bevor sie benannt werden können? Ich habe einen ähnlichen Ansatz wie früher versucht, aber aus irgendeinem Grund hat es nicht funktioniert. – Cyrus

+0

Ja, Sie müssen zuerst die Elemente festlegen, damit die entsprechenden Objekte verfügbar sind. – Domenic

+0

Irgendeine Idee, wie man die Y-Achsenbeschriftung neben der Achse anbringt? Ich habe es versucht: – Cyrus

0

I beendet den Code zu ändern up:

Dim LR As Long 

LR = ActiveSheet.UsedRange.Rows.Count 

Dim aSheet As Worksheet 
For Each aSheet In ActiveWorkbook.Worksheets 'Strain vs Time 
With aSheet.Shapes.AddChart.Chart 
    .ChartType = xlXYScatterSmoothNoMarkers 
    .SetSourceData Source:=aSheet.Range("'" & aSheet.Name & "'!B3:B15000,'" & aSheet.Name & "'!G3:G15000") 
    .SetElement msoElementChartTitleAboveChart 'change the position as desired 
    .SetElement msoElementPrimaryCategoryAxisTitleBelowAxis 'change the position as desired 
    .SetElement msoElementPrimaryValueAxisTitleRotated 'change the position as desired 
    .SetElement msoElementLegendNone 
    .ChartTitle.Text = "Strain vs Time" 'change the chart title as desired 
    .Axes(Type:=xlCategory, AxisGroup:=xlPrimary).AxisTitle.Text = "Time (sec)" 'change the category axis title as desired 
    .Axes(Type:=xlValue, AxisGroup:=xlPrimary).AxisTitle.Text = "Strain" 'change the value axis title as desired 
End With 
Next 

Und es das Problem gelöst. Danke für Ihre Hilfe Domenic

Verwandte Themen