2010-01-20 5 views
3

때때로 셀의 너비와 높이를 초과하는 텍스트가 포함될 수있는 셀이있는 워크 시트가 있습니다. 눈치 채지 못하고 행 높이를 조정하면 텍스트가 잘린 것처럼 보입니다. 누구든지 VBA 스 니펫이나 이러한 셀을 찾을 수있는 도구를 가지고 있으므로 조정할 수 있습니까? 감사!내용을 표시하기에 너무 작은 텍스트 셀 찾기

답변

2

너비가 너무 넓은 열을 식별하는 것은 특히 셀 내의 텍스트가 다른 글꼴 및/또는 글꼴 크기를 가질 수 있기 때문에 까다로울 수 있습니다. Range.AutoFit 메서드를 사용하여 열의 크기를 자동으로 조정하는 것이 훨씬 쉽습니다. 다음

예로서, 사용자는 자동 맞춤 방법을 호출 할 수

Dim myRange As Excel.Range 
Set myRange = Application.Range("A1:C3") 
myRange.Columns.AutoFit 

Range.AutoFit 방법도 좁은 컬럼들을 초래하지만, 조금 너무 공격적 일 수있다. 따라서 최소 열 너비를 설정하는 방법을 만들 수 있습니다 :

Sub AutoFitColumns(theRange As Excel.Range, minColumnWidth As Double) 
    theRange.Columns.AutoFit 

    Dim column As Excel.Range 

    For Each column In theRange.Columns 
     If column.ColumnWidth < minColumnWidth Then 
      column.ColumnWidth = minColumnWidth 
     End If 
    Next column 
End Sub 

위하지만 8.5의 최소 폭, 열을 자동 맞춤을 다음과 같이 호출 할 수 있습니다 :

Dim myRange As Excel.Range 
Set myRange = Application.Range("A1:C3") 
Call AutoFitColumns(myRange, 8.5) 

범위의 행을 자동 맞춤 설정할 수도 있습니다. 이것은 자주 필요하지 않지만 다음과 같이 사용하십시오.

희망이 있습니다.

업데이트 : 크레이그의 댓글에 답글 달기 :

Thansk 마이크. 이 스프레드 시트는 웹 인터페이스 생성기에 stuckctured 입력으로 으로 사용되므로 열 너비는 이므로 변경하지 않아야합니다. 나는 실제로 그냥 텍스트가 표시되는 모든 세포에 대한 시트를 검색 무언가를 찾고 세포가 세포가 허용 할 수있는 것보다 넓기 때문에 큰 크기의 큰 크기가 필요합니다. 조정을 만들기 위해 프로세스를 찾고 있습니다. 단지 이므로 간과하기 쉽습니다. 에 대한 아이디어가 있습니까? (1) 세포가 차단되고 있는지 확인하고 (2)이 컷오프를 수정 :

글쎄, 분명 당신은 일을하고 싶다.

두 가지 단계로이 작업을 수행하고자하는 것으로 알고 있지만 행 높이와 열 너비가 다를뿐만 아니라 텍스트 배치가 켜져있을 수 있기 때문에 (1) 단계는 Excel의 모든 상황에서 올바르게 수행하기가 거의 불가능합니다. 또는 끄기가 가능하며 글꼴은 잠재적 스타일 및/또는 크기에 관계없이 비례 글꼴 일 수 있습니다.

요약하면 엄청난 양의 작업을하지 않고도 어떤 셀이 잘리고 있는지를 확실하게 식별 할 수있는 방법이 없습니다. 그러나 스프레드 시트를 단 하나의 글꼴 스타일로 제한하고 비례 글꼴을 사용하면 완화 할 수 있습니다. 이렇게하면 열 너비를 단순히 셀 내의 텍스트 길이와 비교할 수 있습니다.Excel.Range.ColumnWidth 속성은 열 너비의 한 단위가 표준 스타일의 한 문자 너비와 같도록 조정 된 너비를 반환하기 때문입니다. 비례 폰트의 경우, 문자 0 (제로)의 폭이 사용됩니다.

그러므로 은 단어 줄 바꾸기가 사용되지 않고 글꼴이 표준 스타일로되어 있고 이상적으로 일반 글꼴이 비례 글꼴이고 그 다음에 모든 셀을 반복 할 수 있습니다. 보유하고있는 값이 열 너비보다 긴 위치를 찾고있는 범위 :

Dim myRange As Range 
Set myRange = Application.Range("A1:E5") 

Dim cell As Excel.Range 
For Each cell in myRange.Cells 
    If Len(CStr(cell.Value)) > cell.ColumnWidth Then 
     MsgBox "The cell at " & cell.Address & " has text that is too long!" 
    End if 
Next cell 

하지만 여기에 다음 부분이 올 것입니다. 어떻게 수정 하시겠습니까? 단어 줄 바꾸기가 사용되지 않고 글꼴이 표준 스타일로되어 있고 이상적으로 일반 글꼴이 비례 글꼴 인 경우 매우 간단합니다.

다음,

Dim myRange As Range 
Set myRange = Application.Range("A1:E5") 

Dim cell As Excel.Range 
For Each cell in myRange.Cells 
    If Len(CStr(cell.Value)) > cell.ColumnWidth Then 
     cell.Columns.AutoFit 
    End if 
Next cell 

그러나 우리가려고하는 경우에 열을 자동 맞춤 :

Dim myRange As Range 
Set myRange = Application.Range("A1:E5") 

Dim cell As Excel.Range 
For Each cell in myRange.Cells 
    If Len(CStr(cell.Value)) > cell.ColumnWidth Then 
     cell.ColumnWidth = Len(CStr(cell.Value)) 
    End if 
Next cell 

(2) 열을 자동 맞게 : (1) 셀의 값 길이에 맞게 열 너비를 설정 열 너비를 먼저 확인하지 않고 바로 직접 호출하는 것이 훨씬 쉽습니다. 너비가 b가 될뿐만 아니라 e는 한 번에 모든 셀에 대해 수정되지만, Range.AutoFit 메서드는 비례 폰트를 포함하여 모든 스타일을 포함한 모든 글꼴을 처리 할 수 ​​있습니다.

따라서 자동 맞추기 방식으로 직접 이동하는 두 가지 옵션이 있습니다. 열 자동 맞춤 또는 행 자동 맞춤입니다. 정말 그냥 표시되는 텍스트 이고 어떤 세포에 대한 시트를 스캔 할 뭔가를 찾고

내가 해요 : 가장 최근의 견적을 바탕으로, 당신이 크기를 다시 할 같은 소리 셀이 허용하는 것보다 넓기 때문에 행 높이가 더 커야합니다.

이 경우 텍스트 줄 바꿈을 사용하고 행을 자동 완성합니다. 예 :

Dim rng As Excel.Range 
Set rng = Application.Range("A1:E5") 

With rng.Rows 
    .WrapText = True 
    .AutoFit 
End With 

이 모든 것이 사용자의 모든 옵션에 해당한다고 생각합니다. 결국 Excel에서 수행 할 수있는 작업과 정확하게 일치하지 않을 수도 있지만 에서 필요한 작업을 수행 할 수 있어야한다고 생각하십니까? 트릭을하면 알려주세요.

- 마이크

+0

Thansk Mike. 이 스프레드 시트는 웹 인터페이스 생성기에 대한 정적 입력으로 사용되므로 열 너비가 다양하므로 조정할 필요가 없습니다. 저는 실제로 텍스트가 표시된 셀이 시트를 스캔하여 무언가가 셀이 허용 할 수있는 것보다 넓어서 행 높이가 더 커야 할 필요가있는 것을 찾고 있습니다. 나는 조정하기위한 과정을 찾고 있지 않다. 간과하기 쉽기 때문에 그들을 찾는다. 그것에 대한 아이디어가 있습니까? – Craig

+1

안녕하세요 크레이그, 당신이하고 싶은 일과 Excel이 할 수있는 일이 정확히 불행히도 일치하지 않을 수도 있습니다. 그러나 나는 * 당신이 필요한 것을 다 할 수 있어야한다고 생각합니다. 나는 "Update : Craig 's Comment에 답장"이라는 제목의 섹션에 이어 나의 답변을 업데이트했다. 희망이 도움이됩니다! –

관련 문제