범위의 마지막 행에만 영향을주는 Excel 2010 VBA


1

Excel 2010에서 테이블의 행 주위에 패딩을 적용하기 위해 작성된 VBA 코드가 있지만 코드의 일부는 범위의 마지막 행에만 영향을 미칩니다. 전체 코드는 다음과 같습니다.

Private Sub FixRowHeight_Click()
Dim rng As Range
Dim eRow As Excel.Range
Dim padding As Integer
padding = 10
With Worksheets("Issues")
    Set rng = .Range("A2").End(xlDown)
    rng.Select
    .Rows.AutoFit
    For Each eRow In rng.Rows
        eRow.Select
        eRow.VerticalAlignment = xlCenter
        eRow.RowHeight = eRow.RowHeight + padding
    Next eRow
End With
End Sub

그것을 실행할 때마다 전체 범위가 행 높이를 자동으로 맞추기 때문에 문제는 for-each 루프에만있는 것 같습니다. 해당 루프에 포함 된 모든 것은 범위의 마지막 행에서 잘 작동하지만 그게 전부입니다. 루프의 두 가지 실제 변경 (수직 정렬 및 패딩) 중 하나에 영향을받는 다른 행은 없습니다.

전체 .xlsm 파일은 간단한 한 장의 통합 문서입니다 (다른 두 개의 기본 시트는 삭제됨). 내용은 A1부터 시작하여 열 제목과 정렬이 가능하고 현재 날짜를 추가하는 기능은 없지만 기본 스타일 테이블입니다.

프로그래밍 경험이 있지만 VBA (또는 다른 VB)에는 없습니다. 어떤 도움이라도 대단히 감사하겠습니다!


루프 전에 중단 점을 설정 한 후 For Each 루프의 각 반복을 단계별로 수행하면 eRows가 각 반복에 대한 rng.Rows의 올바른 멤버로 채워 집니까?
Ƭᴇcʜιᴇ007

답변:


1

문제는 당신의 고리에 있지 않습니다, 그것은 당신의 것입니다 rng-

당신이 때 set rng = range("A2").end(xlDown)당신은 A2에서 아래로 채워집니다 마지막 셀에 RNG를 설정한다. 즉, 하나의 셀만 선택합니다.

시도-

Set rng = Range(Cells(2, 1), Cells(2, 1).End(xlDown))


이것은 잘 작동합니다-

Sub FixRowHeight_Click()
Dim rng As Range
Dim padding As Integer
padding = 10
With ActiveSheet
    Set rng = .Range(Cells(2, 1), Cells(2, 1).End(xlDown))
    rng.Rows.AutoFit
    For Each Row In rng
        Row.VerticalAlignment = xlCenter
        Row.RowHeight = Row.RowHeight + padding
    Next
End With
End Sub

그러나 이것도 마찬가지입니다.

Sub FixRowHeight_Click()
    Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Rows.AutoFit
    For Each Row In Range(Cells(2, 1), Cells(2, 1).End(xlDown))
        Row.VerticalAlignment = xlCenter
        Row.RowHeight = Row.RowHeight + 10
    Next
End Sub

또한 참고 사항이지만 루프의 나머지 부분이 아닌 한 .select코드에 필요하지 않습니다 .erowselection.verticalalignment

.select일반적으로 범위 를 피하는 것이 가장 좋으며 범위를 하드 코딩하는 것이 가장 좋지만 여기도 없습니다.


이것은 내가 필요한 것입니다! 행 / 셀 위와 아래에 셀 패딩을 추가하는 것에 대해 찾은 모든 것은 Excel에 해당 기능이 포함되어 있지 않지만 완료하기로 결정했습니다. 나는 사람들에게 가장 좋은 코드를 실제로 제공한다고 말합니다. 감사!
PCI-J
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.