2012-02-15 2 views
2

A2에서 AA2 범위의 자동 맞춤을 수행하려고합니다. 화면에 표시되는 다음 VBA를 사용하여 행 자동 맞춤

Application.ScreenUpdating = False 
Dim wkSt As String 
Dim wkBk As Worksheet 
wkSt = ActiveSheet.Name 
For Each wkBk In ActiveWorkbook.Worksheets 
    On Error Resume Next 
    wkBk.Activate 
    Cells.Range("A2:AA2").EntireColumn.AutoFit 
Next wkBk 
Sheets(wkSt).Select 
Application.ScreenUpdating = True 

은, 일부 샘플 엑셀 데이터입니다 : "Jhon 최고의 직원이있다"고

 A   B   C 
1 Jhon is the best employee 
2 Emp_Name  Emp_id  Empsal. 

주 모든되어 다음

내가 노력하고 코드입니다 하나의 셀 (A1)에서 표시되지만 내용이 셀 B1 및 C1과 중첩됩니다.

 A        B  C 
1 Jhon is the best employee 
2 Emp_Name      Emp_id Empsal 

어떻게 각 워크 시트의 두 번째 행의 각 셀에 자동 맞춤을 할 수있는 다음과 같이 위의 코드와

는 데이터는 표시됩니다? 위 코드는 두 번째 행의 데이터를 자동 완성하지 못했습니다. ". Empsal"

 A  B  C 
1 Jhon is the best employee 
2 Emp_Name Emp_id Empsal. 

즉 열이에 snuggly 주위에 "EMP_NAME", "EMP_ID"과 맞게해야

내가 디스플레이가 같이 할 것입니다 - "Jhon은 최고의 직원"이 아닙니다.

EDIT 또한 다음 행 (3, 4 등)에 데이터가 있으면 Autofit에도 이러한 데이터가 포함되어야합니다. 대신에 EntireColumn에 자동 맞춤을하는

 A   B  C 
1 Jhon is the best employee 
2 Emp_Name Emp_id Empsal. 
3 Jhon Peter 2  2000 

답변

5

원하는 경우 Autofit이 첫 번째 행을 무시하고 2 행 이상의 내용을 기반으로 자동 맞춤을 강제로 수행하는 것입니다. 나는 이것이 가능하다고 생각하지 않는다. 그것을 할 수 한 가지 방법은, 첫 번째 행의 컨텐츠를 저장 삭제, 자동 맞춤 다시 첫 번째 행의 내용을 삽입하는 것입니다 :

Public Sub test() 

    Dim wkSt As String 
    Dim wkBk As Worksheet 
    Dim temp As Variant 

    wkSt = ActiveSheet.Name 
    For Each wkBk In ActiveWorkbook.Worksheets 
     On Error Resume Next 
     wkBk.Activate 
     temp = wkBk.Rows(1) 
     wkBk.Rows(1).ClearContents 
     wkBk.Columns("A:AA").AutoFit 
     wkBk.Rows(1) = temp 
    Next wkBk 
    Sheets(wkSt).Select 

End Sub 
+0

이 방법도 작동하지 않습니다. 행에서 자동 맞춤을하지 않습니다. – user569125

+0

나는 고쳤다 : 이제는 효과가있다. – assylias

+0

@ assylias : 감사합니다. 작동 중입니다. – user569125

2

를이 Columns에 할 예를 들어, 데이터는 아래와 같이 표시됩니다. 이제뿐만 아니라 행 2 자동 맞춤을 수행 할

wkBk.Range("A2:AA2").Columns.AutoFit 

은 자동 맞춤에 대한 VBA 도움말을 살펴 ...

편집을 가지고뿐만 아니라 3, 4, 5는이 단지 필요 등 간단한 수정 :

wkBk.Range("A2:AA999").Columns.AutoFit 

위의 내용은 999 행이 자동 맞춤 설정되는 데이터가있는 마지막 행이라고 가정합니다. 다음과 같이 시트의 맨 아래까지 모든 행을 포함시킬 수도 있습니다.

wkBk.Range(Range("A2"), Cells(wkBk.Rows.Count, "AA")).Columns.AutoFit 

올바른 트랙을 얻을 수있을만큼 충분합니다.

+0

그것은하지 행 3 번째를 들어, 열만을 위해하고있다, 4th, 5th 등. 나는 두 번째 줄에서 각 셀에 대해이 작업을 수행하려고했다. – user569125

+0

글쎄, 당신은 원래의 질문에 언급하지 않았다. 나는이 문제를 해결하기 위해 나의 대답을 편집했다. –