Vba 优化录制宏;我知道我需要写一个循环,但我不确定怎么做

Vba 优化录制宏;我知道我需要写一个循环,但我不确定怎么做,vba,excel,loops,Vba,Excel,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:=

我有一段代码如下:

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

我在VBA代码中找到了堆栈溢出的循环示例。我没有在VBA代码中找到堆栈溢出循环的例子,这些循环涉及选择一个范围、复制该范围、选择一个新范围、在该范围上过滤,然后在该新范围上粘贴特殊内容。由于范围是变量,它似乎与简单循环示例不同。lol找到一个100%符合您需求的示例的可能性几乎为零。pnuts建议您研究一些类似的示例并应用它们。你们知道,不要要求被填鸭式的XD提示:不要使用范围。使用细胞,很有趣。我在右边相关问题列表的第三项中找到了->>>>>>>>大约半秒钟,它显示了如何准确地完成您在这里提出的问题。。在发布之前,您似乎并没有尽力寻找答案。谢谢您的回复!我将尝试连接方法。问题在于,我只选择在S3:B256范围内包含数字的单元格,即,我选择整个范围,然后使用“转到特殊”功能。从那里,我粘贴特殊的数据添加。由于范围大小不同,我得到了粘贴错误。与较长范围的连接似乎是一个问题。它不接受范围&x:B&x在较长范围内的关联性很好,这是您实现它时的一个输入错误。看看你写的东西,想想它是如何转换成一个静态范围的,就像我输入的:RangeA1:b1。作为对你第一条评论的回应,我能够直接复制我的示例并毫无问题地运行它。如果你能在你的问题中提供样本数据,我可以重现你的问题。