优化录制的宏;我知道我需要写一个循环,但我不确定如何这样做

时间:2015-08-25 21:53:51

标签: excel vba excel-vba loops

我有一段代码如下:

Range("C3").Select
Application.CutCopyMode = False
Selection.Copy
Range("S3:BL3").Select
Selection.SpecialCells(xlCellTypeConstants, 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
    False, Transpose:=False
Range("C4").Select
Application.CutCopyMode = False
Selection.Copy
Range("S4:BL4").Select
Selection.SpecialCells(xlCellTypeConstants, 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
    False, Transpose:=False

... and so on until row 257

更改代码的唯一部分是我选择的范围,所以我知道我可以编写一个循环来实现这一点,而不必重复所有其他代码,但我并不是真的确定从哪里开始。

我想这样做一些反击,但我知道我不能把变量" x"在列字母旁边让它重复这个过程:

 For x = 3 to 256
    Range("Cx").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("Sx:BLx").Select
    Selection.SpecialCells(xlCellTypeConstants, 1).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
        False, Transpose:=False

1 个答案:

答案 0 :(得分:0)

要回答你关于“我不能只放x”的难题,你肯定可以连接。 Range("C" & x)会提供您正在寻找的内容。

但是,根据你给出的例子,你似乎知道你想要迭代的范围;为什么不只选择一次范围,并粘贴范围一次?

Range("C3:C256").Select
Application.CutCopyMode = False
Selection.Copy
Range("S3:BL256").Select
Selection.SpecialCells(xlCellTypeConstants, 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
    False, Transpose:=False