VBA:在For-Each循环中嵌套循环

时间:2017-02-03 05:58:37

标签: vba loops nested-loops

我正在尝试在工作表中执行复制粘贴循环,然后将此相同的循环应用于同一工作簿中的所有其他工作表。

然而,问题是在一个工作表上完成第一个复制粘贴循环后,代码不会移动到下一个工作表,循环只会在同一个工作表中重复。

For Loop:简单复制粘贴

For-Each循环:循环浏览工作表

这是代码:

Sub Code()

Dim sheet As Worksheet
Dim nr As Integer

For Each sheet In Worksheets

    For nr = 14 To 309

        Range("C" & nr).Copy
        Range("C3").PasteSpecial xlPasteValues

        Range("D" & nr).Copy
        Range("C4").PasteSpecial xlPasteValues

        ActiveSheet.Calculate

        Range("F2").Copy
        Range("E" & nr).PasteSpecial xlPasteValues

        Range("I2").Copy
        Range("F" & nr).PasteSpecial xlPasteValues

    Next nr

Next

End Sub

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您只需要限定范围,使其对工作表的引用是个问题。

document.addEventListener('DOMContentLoaded', function() {
  var checkPageButton = document.getElementById('checkPage');
  checkPageButton.addEventListener('click', function() {

downloadImages()

  }, false);
}, false);

function downloadImages() {







var images = document.getElementsByTagName('img');
var srcList = [];
var i = 0;

setInterval(function(){
    if(images.length > i){
        srcList.push(images[i].src);
        var link = document.createElement("a");
        link.id=i;
        link.download = images[i].src;
        link.href = images[i].src;
        link.click();
        i++;
    }
},1500);









}

始终限定您的范围是一种很好的做法。否则,他们会转到当前活动的任何工作表。

答案 1 :(得分:0)

为了提高性能而不是强调剪贴板使用,您可以避免使用Copy& PasteSpecial种方法并切换到直接Value属性分配

此外,您可以使用正确的语法

压缩范围

如下:

Option Explicit

Sub main()
    Dim ws As Worksheet, nr As Integer

    For Each ws In ThisWorkbook.Worksheets
        For nr = 14 To 309
            With ws
                .Range("C3:C4").Value = .Range("C" & nr).Resize(2).Value
                .Calculate
                .Range("E" & nr).Resize(, 2).Value = Array(.Range("F2").Value, .Range("I2").Value)
            End With
        Next
    Next
End Sub