2016-09-05 2 views
4

Select없이 화면 해상도를 기준으로 확대/축소 수준을 설정할 수 있습니까?Excel에서 선택하지 않고 줌 설정 VBA

나는 코드를 따랐다 :

Range("A1:AC1").Width.Zoom=True 

업데이트 :

Sheets(1).Range("A1:AC1").Select ActiveWindow.Zoom = True 

같은 것을 할 것 https://stackoverflow.com/a/19439177/1903793

원하는 코드에서 가져옵니다. 선택을 피하려고하는 이유는 무엇입니까?

  1. 내 시트에는 사용자 설정에 따라 숨겨진 열이 있습니다. 따라서 A1 : AC1 범위의 일부 열이 숨겨집니다. 이 특정 열이 숨겨져 있기 때문에 단일 열을 선택할 수 없습니다.
  2. 선택 이벤트가 트리거됩니다. 물론 이벤트를 사용하지 못하게 할 수 있지만 이벤트를 사용하지 않도록 설정하면 피해야 할 부작용이 있습니다.
+0

을 http://stackoverflow.com/questions/9414426/excel-2007-vba-zooming-without-using-select이 테스트를 통과하지 – Raystafarian

답변

0

그게 내가 끝냈다. 숨겨진 열에 대한 솔루션입니다. 나는 컬럼을 선택하지 않고 모양을 선택했다. 사각형을 추가하고 이름을 "BoxForZoom"으로 지정하십시오. 확대/축소를 위해서는 충분히 넓어야합니다. 그런 다음, 다음 코드를 적용 관련

Sheet1.Shapes("BoxForZoom").Visible = True 
Sheet1.Shapes("BoxForZoom").Select 
ActiveWindow.Zoom = True 
Sheet1.Shapes("BoxForZoom").Visible = False 
2

이 방법은 효과가 있지만 만족할만한 것은 아닙니다.

우리 열 (컬럼 29이다) AC을 표시하고자하므로, 우리는 Zoom = 100에서 시작하여 29 + 1 열이 VisibleRange에있을 때까지 시간에 그것을 한 단계 감소 :

Sub ShrinkWindow() 
    Dim i As Long, r As Range 

    For i = 100 To 1 Step -1 
     ActiveWindow.Zoom = i 
     Set r = ActiveWindow.VisibleRange 
     If r.Columns.Count = 29 + 1 Then Exit Sub 
    Next i 
End Sub 
2

현재 창 너비와 범위 너비를 측정하기 만하면됩니다. 그런 다음이 값을 사용하여 비율을 설정할 수 있습니다. 참고 -이 작업에는 몇 가지 추가 유효성 검사 및 오류 처리가 필요하지만 기본 아이디어를 제공해야합니다.

Private Sub ZoomToRange(target As Range) 
    'Get the window from the target range. 
    Dim wnd As Window 
    Set wnd = ActiveWindow 

    'Find out what you need to scale to. 
    Dim scaling As Long 
    scaling = 100 * wnd.Width/target.Width 
    'Limit to max and min zoom level. 

    If scaling > 400 Then 
     wnd.Zoom = 400 
    ElseIf scaling < 10 Then 
     wnd.Zoom = 10 
    Else 
     wnd.Zoom = scaling 
    End If 
    'Scroll to the upper left cell 
    target.Cells(1, 1).Activate 
End Sub 
+0

일부 열이 숨겨져있는 경우 . 숨겨진 열을 숨김없이 진정한 범위 너비를 얻을 수 있습니까? –

+0

@PrzemyslawRemin - 가능하지만 열을 반복하여 수동으로 계산해야합니다. 숨겨져 있지 않으면 (예 :'rng.Columns (1) .Hidden') 너비를 추가하십시오. – Comintern

+0

사용자 선택에 따라 범위의 일부 열이 숨겨져있을 수 있습니다. 나는 그 (것)들을 숨기기없이 해결책을 찾고있다. –