Excel 提高循环速度';她的表现如何?

Excel 提高循环速度';她的表现如何?,excel,vba,loops,for-loop,do-loops,Excel,Vba,Loops,For Loop,Do Loops,我目前必须使用工作簿、测试1(编写代码的第一个工作簿的名称)和测试2(其中值从测试1粘贴到中)。我的当前代码从测试1工作簿的行K1-K10(第11列,第1-10行)中获取值,并将其粘贴到测试2工作簿的列F2-P2(第2行,第6-16列)(第一个代码正在工作 我试图让这段代码运行得更快,就像我在其他应用程序中使用它一样,我觉得循环会使它变得滞后和迟钝。我试图用一个双(For)循环语句替换Do(While)循环。如果您有什么建议,请告诉我,因为我的双(For)循环没有将任何值粘贴到测试2工作簿中(以

我目前必须使用工作簿、测试1(编写代码的第一个工作簿的名称)和测试2(其中值从测试1粘贴到中)。我的当前代码从测试1工作簿的行K1-K10(第11列,第1-10行)中获取值,并将其粘贴到测试2工作簿的列F2-P2(第2行,第6-16列)第一个代码正在工作

我试图让这段代码运行得更快,就像我在其他应用程序中使用它一样,我觉得循环会使它变得滞后和迟钝。我试图用一个双(For)循环语句替换Do(While)循环。如果您有什么建议,请告诉我,因为我的双(For)循环没有将任何值粘贴到测试2工作簿中(以及如何测量每个函数运行所需的时间)

以下是代码和屏幕截图以及视觉帮助:

Private Sub CommandButton1_Click()

Dim y As Workbook
Dim i As Integer
Dim j As Integer
i = 6
j = 1

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

    With y



        Do While j <= 11
            If (Cells(j, 11).Value <> "") Then

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

            End If

        i = i + 1
        j = j + 1

        Loop



        .Password = "Swarf"
        .Save
        .Close False

    End With


End Sub
Private子命令按钮1\u单击()
将y作为工作簿
作为整数的Dim i
作为整数的Dim j
i=6
j=1
设置y=工作簿。打开(文件名:=“\\FILEPATH\Databases\Test 2.xlsm”,密码:=“Swarf”)
与y

要在注释中编写很多代码,请执行以下操作:

Private Sub CommandButton1_Click()

    With Workbooks.Open(Filename:="\\FILEPATH\Databases\Test 2.xlsm", Password:="Swarf").Sheets("MyTest2")
        .Unprotect "Swarf"
        .Range("F2:O2") = Application.Transpose(Sheet1.Range("K1:K10"))
        .Protect "Swarf"
        .Password = "Swarf"
        .Save
        .Close False
    End With
End Sub

不确定保护/密码的问题。

要在注释中编写很多代码,但现在您可以:

Private Sub CommandButton1_Click()

    With Workbooks.Open(Filename:="\\FILEPATH\Databases\Test 2.xlsm", Password:="Swarf").Sheets("MyTest2")
        .Unprotect "Swarf"
        .Range("F2:O2") = Application.Transpose(Sheet1.Range("K1:K10"))
        .Protect "Swarf"
        .Password = "Swarf"
        .Save
        .Close False
    End With
End Sub

不确定保护/密码的事情。

这是@Vincent G答案稍微修改了一下(我接受了他的答案)-刚刚修复了我收到的密码错误,我现在正在使用此代码,它工作得非常完美

如果有人读了这篇文章,想知道每个人的建议的最终结果是什么,请把这篇文章留在这里,感谢所有对此做出贡献的人

Private Sub CommandButton1_Click()

Dim y As Workbook

Application.ScreenUpdating = False

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

    With y
        Sheets("MyTest2").Unprotect "Swarf"

        .Sheets("Mytest2").Range("F2:O2") = Application.Transpose(Sheet1.Range("K1:K10"))

        Password = "Swarf"
        .Save
        .Close False

    End With

Application.ScreenUpdating = True

End Sub

这是@Vincent G答案稍加修改(我接受了他的答案)-刚刚修复了我收到的密码错误,我现在正在使用此代码,它工作正常

如果有人读了这篇文章,想知道每个人的建议的最终结果是什么,请把这篇文章留在这里,感谢所有对此做出贡献的人

Private Sub CommandButton1_Click()

Dim y As Workbook

Application.ScreenUpdating = False

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

    With y
        Sheets("MyTest2").Unprotect "Swarf"

        .Sheets("Mytest2").Range("F2:O2") = Application.Transpose(Sheet1.Range("K1:K10"))

        Password = "Swarf"
        .Save
        .Close False

    End With

Application.ScreenUpdating = True

End Sub

您只需取消对工作表的保护一次。在循环之外做。如果您的代码工作正常,并且您只是想改进它,那么这个问题可能更适合您,您只是在转换值吗?如果是这样,就根本不需要任何循环。Range
K1-K10
包含10个单元格,您正在将它们粘贴到Range
F2-P2
,即11个单元格中……无论如何,为什么不复制10/11值,然后将它们转置粘贴到单元格
F2
?如果您想要更快,请不要逐个单元格复制数据,按组复制它们。@Handreen
.Sheets(“MyTest2”)。取消保护“swaf”
开头的
表示它正被
With
语句引用,因此它需要紧跟在
With
之后。例如,只需取消对工作表的保护一次。在循环之外做。如果您的代码工作正常,并且您只是想改进它,那么这个问题可能更适合您,您只是在转换值吗?如果是这样,就根本不需要任何循环。Range
K1-K10
包含10个单元格,您正在将它们粘贴到Range
F2-P2
,即11个单元格中……无论如何,为什么不复制10/11值,然后将它们转置粘贴到单元格
F2
?如果您想要更快,请不要逐个单元格复制数据,按组复制它们。@Handreen
.Sheets(“MyTest2”)。取消保护“swaf”
开头的
表示它正被
With
语句引用,因此它需要紧跟在
With
之后。例如,密码似乎给了我某种类型的错误,有什么解决办法吗?我只是稍微修改了你的代码,谢谢你的帮助。密码似乎给了我某种类型的错误,有什么解决办法吗?我只是稍微修改了你的代码,谢谢你的帮助