2017-11-22 5 views
1

データセットの行をループする非常に単純なコード行があります。しかし、私はループ内でこのコードを10回繰り返していることに気付きました。なぜなら、他のすべての列で同じことをする必要があるからです。VBAループは2列ごとにループします

ループ内の各列に対してこのコードを手動で再編成するのではなく、このコードがYからAC列などに作用するように、列をループする方法はありますか?

For i = 1 To Count 
    ActiveSheet.Range("Y" & i + 1).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Next i 

答えて

1

を使用すると、複数のカラムで何かを貼り付ける必要がある場合は、ネストされたループを試してみてください、列と行を介さ:

Public Sub TestMe() 

    Dim lngRow As Long 
    Dim lngCol As Long 

    For lngRow = 1 To 10 
     For lngCol = 25 To 29 
      With ActiveSheet 
       .Cells(lngRow, lngCol) = "here we paste" 
      End With 
     Next lngCol 
    Next lngRow 

End Sub 

あなたはこのような何かを得るでしょう:

Cellsではなく Rangeから

enter image description here

+0

すべてのあなたの助けをありがとう、素晴らしい作品! – Carlos80

+0

@ Carlos80 - あなたは歓迎です:) – Vityata

1

あなたForループでStep 2を試してみてください。

For i = 1 To Count Step 2 
    ActiveSheet.Range("Y" & i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
      SkipBlanks:=False, Transpose:=False 
Next i 

あなたが列をループにしたい場合は、下記のコードのようなものが必要です。

Dim Row As Long 
Dim col As Long 

For col = 25 To Count Step 2 
    ActiveSheet.Cells(Row, col).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
      SkipBlanks:=False, Transpose:=False 
Next col 
+0

なぜあなたはそれがあなたがそれをやったかのように '行'と 'col'を宣言したことを実感したときに厄介な瞬間です: – Vityata

0

スイッチとStep 2と外側のループを追加します。

For j = 25 To 31 Step 2 ' Every other col from col Y to col ACC 
    For i = 1 To Count 
     ActiveSheet.Cells(i + 1, j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    Next i 
Next j 
0

あなたはこのようなYAR間の毎秒の列をスキップすることができます:

Dim currCol As Integer, currRow As Integer 
rowsToLoop = 4 
For currCol = Columns("Y").Column To Columns("AR").Column Step 2 
    For currRow = 1 To rowsToLoop 
     Debug.Print "Current Cell: " & ActiveSheet.Cells(currRow + 1, currCol).Address 
     ActiveSheet.Cells(currRow + 1, currCol).PasteSpecial Paste:=xlPasteValues 
    Next currRow 
Next currCol 

私はあなたを手作業でまたはプログラムでコピーコード実行前のセルまたは範囲...手動で行う場合は、Copyの範囲メソッドがあることに注意してください。セルT5をコピーするたとえば、あなたが使用します。

Range("T5").Copy 

CountからmyCountに「行数は繰り返す」ためCountが予約語とshouldn」ですので、私はあなたの変数の名前を変更することに注意してください変数名として使用することができます。

関連する問題