VBA每两列循环一次
我有一行相当直接的代码,在数据集的行中循环。然而,我意识到我在循环中重复了10次这段代码,因为我需要每隔一列做同样的事情 如何循环列,使代码从Y列到AA列再到AC列等等,而不是手动为循环中的每一列重新重复VBA每两列循环一次,vba,excel,Vba,Excel,我有一行相当直接的代码,在数据集的行中循环。然而,我意识到我在循环中重复了10次这段代码,因为我需要每隔一列做同样的事情 如何循环列,使代码从Y列到AA列再到AC列等等,而不是手动为循环中的每一列重新重复 For i = 1 To Count ActiveSheet.Range("Y" & i + 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
For i = 1 To Count
ActiveSheet.Range("Y" & i + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
在
循环中尝试步骤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
如果需要在多个列中粘贴内容,请尝试嵌套循环,遍历列和行:
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
你会得到这样的结果:
切换到单元格
而不是范围
,并使用步骤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
您可以像这样跳过Y和AR之间的每一列:
在代码运行之前,我可以手动或编程方式复制单元格或区域。。。如果是手动操作,请注意有一个Copy
range方法。例如,要复制单元格T5,可以使用:
Range("T5").Copy
还要注意的是,我将变量“要重复的行数”的名称从Count
更改为myCount
,因为Count
是一个保留字,不应该用作变量名。当我意识到为什么要以这样的方式声明Row
和col
时,这是一个尴尬的时刻。。。去过那里,做过那件事:)
Range("T5").Copy