2016-07-28 2 views
1

여러 워크 시트를 통해 내 통합 문서 내의 모든 차트를 정렬하고 크기를 조정하기 위해 VBA 하위를 만들려고 시도했지만 크기 조정에 대한 일반적인 아이디어가 있지만 특정 정렬 방법은 없습니다 기둥. Excel로 여전히 비교적 새로운, 여기에 내가 지금까지 가지고있는 코드 :통합 문서의 모든 차트 조정 및 정렬

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://stackoverflow.com/a/38643389/3218398 – hstay

답변

1

열 정렬에 .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를 이제 작동합니다 항상 두 개의 차트가 있다고 생각하는 대신 워크 시트의 차트 수에 관계 없음)

+0

미안하지만 루프를 보지 못했습니다. 워크 시트를 통해. 'ActiveSheet.ChartObjects (i)'를 'works.ChartObjects (i)'로 변경해야합니다. 그에 따라 내 대답을 편집했습니다. – hstay

+0

고마워요. 게다가 맨 위까지 정렬하도록 설정하고 싶다면 각 차트가 겹치지 않도록 설정할 수 있습니까? 차트가 무작위로 배치되었음을 알게되었습니다. For 루프를 사용하면 맨 위 정렬 행에 작업을 추가 할 수 있습니까? –

+0

Top alignement는 .Top 속성과 동일한 방식으로 작동합니다. – hstay

관련 문제