2013-02-10 99 views
0

很明显,我的代码还没有必要的循环,但是我想创建一个循环来自第3行的Range(“b3:gs3”)并更新它以下的递归时尚:在VBA中创建一个动态范围

Range("b3:gs3") 
Range("b6:gs6") 
Range("b9:gs9") 
. 
. 
. 
Range("b720:gs720") 

我可以编码循环,但在编码范围值的这种变化时遇到了困难。

帮助将不胜感激。

罗恩

Sub Box() 

    Dim curCell3 As Range 

    For Each curCell3 In Sheets("Sheet 2").Range("b3:gs3").Cells 'This is the problem 

    ActiveWorkbook.Sheets("6").Activate 
    Range("B1").Select 

    Do While ActiveCell.Value <> curCell3.Value 
     ActiveCell.Offset(0, 1).Select 
    Loop 

      ActiveCell.Offset(44, 0).Select 
      ActiveCell.Copy 
      ActiveWorkbook.Sheets("Sheet 2").Activate 
      curCell3.Select 
      ActiveCell.Offset(1, 0).Select 
      ActiveCell.PasteSpecial Paste:=xlPasteValues 

    Next curCell3 

ActiveWorkbook.Sheets("6").Activate 
Rows("3:3").Delete 
ActiveCell.Offset(2, -199).Select 

End Sub 
+0

目前还不清楚你到底想达到什么.... – 2013-02-10 16:51:15

+0

我想知道如何编码的范围内。我希望保持行相同,但更改列。例如,如果range(x,y),其中x = b3和y = gs3,我希望下一个循环返回x1 = b6,y1 = gs6,而下一个返回x2 = b9,y2 = gs9等等在 – user2059128 2013-02-10 17:51:59

回答

0
Sub Box() 

    Dim curCell3 As Range 
    Dim rw As Long, f As Range, rngSrch As Range 

    Set rngSrch = ActiveWorkbook.Sheets("6").UsedRange.Columns(2) 

    For rw = 3 To 720 Step 3 

     For Each curCell3 In Sheets("Sheet 2"). _ 
      Range("b" & rw & ":gs" & rw).Cells 

      Set f = rngSrch.Find(curCell3.Value, , xlValues, xlWhole) 
      If Not f Is Nothing Then 
       curCell3.Offset(0, 1).Value = f.Offset(44, 0).Value 
      End If 

     Next curCell3 

    Next rw 

End Sub 
+0

哇,这是令人难以置信的蒂姆。非常感谢你 – user2059128 2013-02-12 16:37:07