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),可以帮助你: 获得实际使用的范围