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



我有一个像这样的代码块:

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

要回答你关于"我不能只放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

最新更新