Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA每两列循环一次_Vba_Excel - Fatal编程技术网

VBA每两列循环一次

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 _

我有一行相当直接的代码,在数据集的行中循环。然而,我意识到我在循环中重复了10次这段代码,因为我需要每隔一列做同样的事情

如何循环列,使代码从Y列到AA列再到AC列等等,而不是手动为循环中的每一列重新重复

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