2016-04-04 7 views
0

私は次の値に行くたびにそれを繰り返したいのですが...これを行う簡単な方法はありますか?次の列に同じ式を再実行するループが必要です

私は、ループ機能を試してみましたが、私はそれが次の列に同じ行のために毎回実行されるように仕事にこれを取得する方法がわかりません。

Sub rebuild() 
If D28 > 2600000 Then 
Range("E$110:I$120").Select 
Selection.Copy 

Range("E18:Il28").Select 
ActiveSheet.Paste 
End If 

If E28 > 2600000 Then 
Range("E$110:I$120").Select 
Selection.Copy 

Range("F18:Jl28").Select 
ActiveSheet.Paste 

End If 

If F28 > 2600000 Then 
Range("E$110:I$120").Select 
Selection.Copy 

Range("G18:Kl28").Select 
ActiveSheet.Paste 

End If 


If G28 > 2600000 Then 
Range("E$110:I$120").Select 
Selection.Copy 

Range("H18:Ll28").Select 
ActiveSheet.Paste 

End If 


End sub 

答えて

0

ソリューションは、配列にあなたの変数を入れ、その後、簡単なforループを作ることである可能性があります。

Dim MyArray(4, 2) as Variant 
MyArray(0,0) = D28 
MyArray(0,1) = Range("E18:Il28") 
MyArray(1,0) = E28 
MyArray(1,1) = Range("F18:Jl28") 
MyArray(2,0) = F28 
MyArray(2,1) = Range("G18:Kl28") 
MyArray(3,0) = G28 
MyArray(3,1) = Range("H18:Ll28") 

For i = LBound(MyArray) to UBound(MyArray) 
    If MyArray(i,0) > 2600000 then 
     Range("E$110:I$120").Copy 
     MyArray(i,1).Paste 
    End If 
Next 
+0

確認したいことがあります。[値]を@のようSiddarth-敗走はありません。 – ZwoRmi

1

これは本当に簡単です。私はコードをコメントしました。

また、コピー/ペーストする範囲を選択する必要はありません。あなたは、私がD28` `の値が(「D28」)細胞`であると仮定していないよTHIS

Sub rebuild() 
    With Sheet1 '~~> Change this to the relevant sheet 
     For i = 4 To 6 '<~~ Col 4 (D) to Col 6 (F) 
      If .Cells(28, i).Value > 2600000 Then 
       '~~> Increment the range wgere you want to paste 
       .Range("E$110:I$120").Copy .Range(.Cells(18, i + 1), .Cells(128, i + 5)) 
      End If 
     Next i 
    End With 
End Sub 
関連する問題