2014-10-10 2 views
-5

누구든지이 코드를 짧은 줄로 최적화하는 좋은 방법을 찾도록 도와 줄 수 있습니까? 나에게 좋은 제안을 해줘.ForLoop 용 VBA Excel 최적화

With Selection 
       .Value = "Apple" 
       .Font.Bold = True 
       .Offset(1).Value = "Orange" 
       .Offset(1).Font.Bold = True 
       .Offset(2).Value = "Strawberry" 
       .Offset(2).Font.Bold = True 
       .Offset(3).Value = "Pear" 
       .Offset(3).Font.Bold = True 
       .Offset(4).Value = "Pineapple" 
       .Offset(4).Font.Bold = True 
       .Offset(5).Value = "Grape" 
       .Offset(5).Font.Bold = True 
       .Offset(6).Value = "Banana" 
       .Offset(6).Font.Bold = True 
       .Offset(8).Value = "Durian" 
       .Offset(8).Font.Bold = True 
       .Offset(8, 1).Value = "Rambutan" 
       .Offset(8, 1).Font.Bold = True 
       .Offset(8, 2).Value = "Dragonfruit" 
       .Offset(8, 2).Font.Bold = True 
       .Offset(8, 3).Value = "Mango" 
       .Offset(8, 3).Font.Bold = True 
      End With 
+5

오류가 없거나 '사용 방법'에 대한 질문이있는 경우 최적화 질문은 [코드 검토] (http://codereview.stackexchange.com/) 자매 사이트에서 StackOverflow로 더 적합합니다. –

답변

3

과일에 대한 소스 배열을 만듭니다.

Dim fruits 
fruits = Array("Apple", "Orange", ... , "Mango") 

그런 다음 루프를 사용하여 값을 범위에 할당하십시오.
추가 변수가 필요합니다.

Dim n As Long, fruit 

With Selection: n = 0 
    For Each fruit In fruits 
     .Offset(n) = fruit: n = n + 1 
    Next 
    .Resize(n + 1).Font.Bold = True '~~> format in one go 
End With 

충분히 최적화 된 것으로 간주할지 모르겠지만 HTH.
Btw, 과일을 할당 할 때 나는 열의 이동을 고려하지 않았습니다. Rambutan.
나는 당신에게 그것을 남겨 둡니다. 다른 변수와 IF 문이 필요할 수 있습니다.

+0

루프가 눈에 잘 띄지 않고 짧아진다. 정말 권장 할만한가? – pnuts

+2

OP의 샘플 데이터에 오타가 있었지만 8 번째 행 (예 :'.OFFSET (7)')도 건너 뛰었습니다. – Jeeped

+1

@pnuts 내가 언급 한 것은 OP의 짧은 줄 요청을위한 것입니다. :) 또한, 나는 그에게 맡긴다. – L42