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列遇到空白单元格。

写循环的方法有很多, 这是一:

 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 

请注意,每个variables都有一个声明,为了可读性而使用Constants。

 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可以在select对象时优化VBA的性能。

下次请注意:

  • 问一个真正的问题 – 看到常见问题
  • 在网上search更多关于你的问题,你真的可以find很多有关VBA循环

[编辑] @Readify在他的评论中指出,我忘了回答“最后一行”。 这里是一个线程(readify作出了一个非常明确的答案btw),可以帮助你: 获得实际使用的范围