调整大小和对齐工作簿中的所有图表

问题描述:

试图创建一个VBA子对齐和调整我的工作簿中的所有图表通过多个工作表,我相信我有一个大致的想法来调整大小,但不知道如何将它们对齐到某个柱。仍然相当新的练成,这里是我到目前为止的代码:调整大小和对齐工作簿中的所有图表

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 

这仅适用于活动工作表,但不会通过所有的表圈。

+0

查看更新的答案和评论:http://*.com/a/38643389/3218398 – hstay

您可以使用.Left属性进行列对齐。如果你想将它们对齐,以“C”柱,你可以使用:

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 

编辑

如果要对齐图表从上到下以及你可以使用.TOP性质和用途以下内容:

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

(代码应现在的工作FO r工作表中的任意数量的图表,而不是考虑总是有2个图表)

+0

对不起,我没有看循环通过工作表。您需要将'ActiveSheet.ChartObjects(i)'更改为'works.ChartObjects(i)'。我相应地编辑了我的答案。 – hstay

+0

谢谢,另外我可以设置它,以便每个图表都不重叠,如果我想将它们设置为顶部对齐顶部?当我意识到这些图表是相当随机定位的。将For循环,我添加到顶部对齐行工作? –

+0

*alignement与.top属性的工作方式相同。 – hstay