2015-01-21 2 views
0

좋은 하루!Excel VBA에서 행 서식 지정을위한 코드 최적화

이제 행의 여러 열을 호출 할 때 VBA에 대한 구문 질문이 더 많습니다. 내 코드는 각 반복마다 새 행에 형식을 지정하는 데 사용됩니다. 이러한 반복은 점진적으로 느려집니다. 이미 속도를내는 방법을 찾기 위해 조금 둘러 보았습니다. Excel에서 상당량의 오버 헤드를 사용하지 못하게하는 Application.ScreenUpdating = False 함수로 구현하고 구현했습니다. 그러나 최적화 할 수 있다고 생각되는 또 다른 영역이 있습니다. 다음 코드는 다소 반복적이며 셀을 개별적으로 호출합니다.이 셀은 추악하고 느립니다. 자, 내 문제는 내 루프에 변수가있을 때 코드의 양을 줄이는 Range 함수를 사용하는 방법을 모른다는 것입니다 ...? 초심자이기 때문에 나는 오류가 계속 발생하면서 Range를 사용하는 적절한 방법을 알지 못한다고 생각합니다. 문제

코드 :

Dim i As Long 
Dim EndRow As Long 

EndRow = ThisWorkbook.Worksheets("Flags").Cells(Rows.Count, 1).End(xlUp).Row 

For i = 19 To EndRow + 1 Step 1 

     ThisWorkbook.Worksheets("Flags").Rows(i).RowHeight = 45 
     ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 1).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 2).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 2).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 3).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 3).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 4).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 4).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 5).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 5).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 6).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 6).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 7).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 7).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 8).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 8).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 9).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 9).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 10).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 10).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 11).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 11).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 12).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 12).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 13).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 13).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 14).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 14).Borders.Weight = xlMedium 
     ThisWorkbook.Worksheets("Flags").Cells(i, 15).Borders.LineStyle = xlContinuous 
     ThisWorkbook.Worksheets("Flags").Cells(i, 15).Borders.Weight = xlMedium 

    Next 
+1

Code Review SE로 마이그레이션 할 수 있습니까? – Chrismas007

답변

2

이 조금 빠른 것이 : 보시다시피

Sub dural() 
    Dim EndRow As Long 
    EndRow = ThisWorkbook.Worksheets("Flags").Cells(Rows.Count, 1).End(xlUp).Row 
    Range("A1:A" & EndRow).EntireRow.RowHeight = 45 
    With Range(Cells(1, 1), Cells(EndRow, 15)) 
     .Borders.LineStyle = xlContinuous 
     .Borders.Weight = xlMedium 
    End With 
End Sub 

은 더 루프가 필요하지 않습니다!

+0

이 코드는 .Cells (ROWIndex, COLUMNIndex) 표기법을 따르지 않았기 때문에 올바른 셀을 호출하지 않습니다. 그것은 또한 원본이 아주 잘 연결된 연결된 명령 단추를 통해 여러 번의 반복을 허용하지 않습니다. 지금 당장 원본과 함께 있어야하고 다른 물건으로 이동해야합니다. 어쨌든 답변 해 주셔서 감사합니다. – BOB

관련 문제