2011-10-06 114 views
0

基本上我想写一个循环 - ,关于第一次迭代都会有Excel 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 

然后第三个迭代

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

和你的问题是什么? – 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 

使用注意事项的With选择对象时,以优化性能VBA。

请照顾下一次:

  • 问一个真正的问题 - 看faq
  • 搜索多一点点关于在网络上你的问题,你可以真的找到很多关于VBA循环

[编辑]正如@Readify在他的评论中指出的,我忘了回答“最后一行问题”。这里是一个线程(其中readify作出了非常明确的答案btw),可以帮助你:Getting the actual usedrange

+0

+1很好地布置。 @Toop更长的循环,您应该考虑将变量数组与速度范围结合使用 – brettdj

相关问题