使用嵌套的Do While语句运行For循环,但是为什么我的代码冻结?

问题描述 投票:0回答:1

我有两个工作簿,一个工作簿的代码内部为Sheet1(这是我要从中复制值的工作表的代号),另一个工作簿在此示例中定义为“ y”。我想将Sheet1中单元格“ K1-K10”的值复制到工作簿y的单元格(“ F1-F10”)中(例如,我希望F1.Value = K1.Value,F2.Value = K2.Value,等等...)。

两个工作簿均受密码保护,我只尝试从Sheet1复制值(这就是为什么我不取消保护它的原因),但是一旦所有值复制完毕,我想保存,关闭和保护工作簿“ y”并粘贴到其中。

当我点击Sheet1内的Activex Commandbutton时,代码冻结了我的工作簿。我也仔细检查了文件路径和工作表名称,它们是正确的。

我还在下面发布了代码和这两个工作簿的屏幕截图:

Private Sub CommandButton1_Click()

Dim y As Workbook
Dim i As Integer

Set y = Workbooks.Open(Filename:="\\FILEPATH\Test 2.xlsm", Password:="Swarf")


    With y

        For i = 1 To 10

            Do While Cells(i, 11).Value <> ""

                .Sheets("MyTest2").Unprotect "Swarf"
                .Sheets("Mytest2").Cells(i, 6).Value = Sheet1.Cells(i, 11).Value

            Loop

        Next i

        .Password = "Swarf"
        .Save
        .Close False

    End With

    End Sub

VBA Code inside codename Sheet1 (Test 1.xslm workbook)

Workbook where the code is (Test 1.xslm) and values are being copied from codename Sheet1

Workbook "y" (Test 2.xlsm) where values are being pasted into

excel vba for-loop do-while
1个回答
1
投票

在这种情况下需要使用While Loop


1
投票

不需要循环,您可以像下面这样一次性传输完整范围的信息:

© www.soinside.com 2019 - 2024. All rights reserved.