2011-10-06 2 views
0

- 은 첫 번째 반복에 그엑셀 VBA - 4 셀 범위와 루프 아래로 열이 나는 루프 쓰기 위해 노력하고있어 기본적

srcT = Worksheets("I").Range("B1").Value 
srcC = Worksheets("I").Range("B2").Value 
trgT = Worksheets("I").Range("B3").Value 
trgC = Worksheets("I").Range("B4").Value 

후 두번째 반복

srcT = Worksheets("I").Range("B5").Value 
srcC = Worksheets("I").Range("B6").Value 
trgT = Worksheets("I").Range("B7").Value 
trgC = Worksheets("I").Range("B8").Value 

후 3 반복을해야합니다

srcT = Worksheets("I").Range("B9").Value 
srcC = Worksheets("I").Range("B10").Value 
trgT = Worksheets("I").Range("B11").Value 
trgC = Worksheets("I").Range("B12").Value 

빈 셀이 B 열에서 발견 될 때까지이 패턴을 계속하십시오.

+1

당신의 질문은 무엇인가 : 여기에 당신을 도울 수 (readify이 BTW 매우 명확한 대답을했다) 스레드는? – JMax

+0

루프를 작성하는 방법은 무엇입니까? – toop

+0

루프가 필요한 이유가 무엇입니까? 변수를 덮어 쓰고 작업하지 않고 왜 마지막 빈 셀을 찾고 거기에서 변수를 채울 수 있습니까? – Reafidy

답변

1

루프를 작성하는 데는 여러 가지 방법이 있습니다. 다음 중 하나입니다.

Option Explicit 

Sub Test() 

    Dim srcT As String 
    Dim srcC As String 
    Dim trgT As String 
    Dim trgC As String 

    Dim counter As Long 

    Const ADD_FACTOR = 4 
    Const WORKSHEET_NAME = "I" 
    Const COLUMN_TO_USE = "B" 


    Dim blankFound As Boolean 

    blankFound = False 

    counter = 1 
    Do 
     srcT = Worksheets(WORKSHEET_NAME).Range(COLUMN_TO_USE & counter).Value 
     srcC = Worksheets(WORKSHEET_NAME).Range(COLUMN_TO_USE & counter + 1).Value 
     trgT = Worksheets(WORKSHEET_NAME).Range(COLUMN_TO_USE & counter + 2).Value 
     trgC = Worksheets(WORKSHEET_NAME).Range(COLUMN_TO_USE & counter + 3).Value 

     blankFound = srcT = "" Or srcC = "" Or trgT = "" Or trgC = "" 

     counter = counter + ADD_FACTOR 

    Loop While blankFound = False 


End Sub 

각 변수에 대한 선언이 있으며 가독성을 위해 상수를 사용합니다.

1
Sub LoopExample() 
Dim i as Integer 
    With Worksheets("I") 
     For i = 1 to 3 
      srcT = .Cells(i, 2).Value 
      srcC = .Cells(i + 1, 2).Value 
      trgT = .Cells(i + 2, 2).Value 
      trgC = .Cells(i + 3, 2).Value 
     Next i 
    End With 
End Sub 

개체를 선택할 때 VBA 성능을 최적화하려면 With을 사용합니다.

관리를 위해 다음에하시기 바랍니다 :

  • 실제 질문을 - 당신이 정말 VBA 루프에 대해 많이 찾을 수 있으며, faq
  • 웹에 귀하의 질문에 대해 조금 더 검색 참조

[편집] @Readify는 그의 의견에서 지적했듯이 "마지막 행 문제"에 답변하는 것을 잊었습니다. Getting the actual usedrange

+0

+1 멋지게 배치되었습니다. @ 루프를 길게하려면 속도에 대한 범위와 함께 변형 배열을 사용하는 것을 고려해야합니다 – brettdj