2016-07-28 4 views
1

Versuchen, eine VBA-Sub zu erstellen, um alle Diagramme in meiner Arbeitsmappe über mehrere Arbeitsblätter auszurichten und zu skalieren, glaube ich, ich habe eine allgemeine Idee zur Größenanpassung aber keine Ahnung, wie Sie sie an einem bestimmten ausrichten Säule. Noch ziemlich neu, zu übertreffen hier ist der Code, den ich bisher habe:Größe und Ausrichtung aller Diagramme in einer Arbeitsmappe

Sub AllChartAlign() 
    Dim works As Worksheet 
    For Each works In ActiveWorkbook.Worksheets 
     For i = 1 To 2 Step 1 
      With ActiveSheet.ChartObjects(i) 
       .Height = 234 
       .Width = 360 
       .Left = Range("Q:Q").Left 
      End With 
     Next i 
    Next works 
End Sub 

Dies ist nur auf dem aktiven Blatt arbeitet, wird aber nicht in einer Schleife durch alle Blätter.

+0

Siehe aktualisierte Antwort und Kommentar: http://stackoverflow.com/a/38643389/3218398 – hstay

Antwort

1

Sie können die Eigenschaft .Left für die Spaltenausrichtung verwenden. Wenn Sie ausrichten wollen, dass sie auf „C“ Spalte können Sie verwenden:

Sub AllChartAlign() 
    Dim works As Worksheet 
    Dim Chrt as ChartObject 
    For Each works In ActiveWorkbook.Worksheets 
     For i = 1 To works.ChartObjects.Count 
      Set Chrt = works.ChartObjects (i) 
      With Chrt 
       .Height = 234 
       .Width = 360 
       .Left = Range("C:C").Left 
      End With 
     Next i 
    Next works 
End Sub 

EDIT

Falls Sie den Charts oben nach unten auszurichten, wie gut können Sie .Top Eigentum und Nutzung verwenden die folgenden:

Sub AllChartAlign() 
    Dim works As Worksheet 
    Dim Chrt as ChartObject 
    Dim ChrtHeight As Double 

    ChrtHeight = 234 
    For Each works In ActiveWorkbook.Worksheets 
     For i = 1 To works.ChartObjects.Count 
      Set Chrt = works.ChartObjects (i) 
      With Chrt 
       .Height = ChrtHeight 
       .Width = 360 
       .Top = ChrtHeight * (i - 1) 
       .Left = Range("C:C").Left 
      End With 
     Next i 
    Next works 
End Sub 

EDIT 2

(-Code sollte jetzt funktionieren fo r eine beliebige Anzahl von Diagrammen in einem Arbeitsblatt statt zu berücksichtigen, dass es immer 2 Diagramme gibt)

+0

Sorry, ich habe nicht auf die Schleife geschaut durch Arbeitsblätter. Sie müssen "ActiveSheet.ChartObjects (i)" in "works.ChartObjects (i)" ändern. Ich habe meine Antwort entsprechend bearbeitet. – hstay

+0

Danke, zusätzlich könnte ich es so einstellen, dass jedes Diagramm nicht überschneidet, wenn ich sie auf die Ausrichtung oben auf die Spitze setzen wollte? Als ich merkte, dass die Charts ziemlich zufällig positioniert sind. Würde eine For-Schleife, in der ich die obere Zeile anlege, funktionieren? –

+0

Obere Ausrichtung funktioniert auf die gleiche Weise mit der Eigenschaft .Top. – hstay

Verwandte Themen