Excel 提高循环速度';她的表现如何?
我目前必须使用工作簿、测试1(编写代码的第一个工作簿的名称)和测试2(其中值从测试1粘贴到中)。我的当前代码从测试1工作簿的行K1-K10(第11列,第1-10行)中获取值,并将其粘贴到测试2工作簿的列F2-P2(第2行,第6-16列)(第一个代码正在工作 我试图让这段代码运行得更快,就像我在其他应用程序中使用它一样,我觉得循环会使它变得滞后和迟钝。我试图用一个双(For)循环语句替换Do(While)循环。如果您有什么建议,请告诉我,因为我的双(For)循环没有将任何值粘贴到测试2工作簿中(以及如何测量每个函数运行所需的时间) 以下是代码和屏幕截图以及视觉帮助: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工作簿中(以
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
您只需取消对工作表的保护一次。在循环之外做。如果您的代码工作正常,并且您只是想改进它,那么这个问题可能更适合您,您只是在转换值吗?如果是这样,就根本不需要任何循环。RangeK1-K10
包含10个单元格,您正在将它们粘贴到RangeF2-P2
,即11个单元格中……无论如何,为什么不复制10/11值,然后将它们转置粘贴到单元格F2
?如果您想要更快,请不要逐个单元格复制数据,按组复制它们。@Handreen.Sheets(“MyTest2”)。取消保护“swaf”
开头的
表示它正被With
语句引用,因此它需要紧跟在With
之后。例如,只需取消对工作表的保护一次。在循环之外做。如果您的代码工作正常,并且您只是想改进它,那么这个问题可能更适合您,您只是在转换值吗?如果是这样,就根本不需要任何循环。RangeK1-K10
包含10个单元格,您正在将它们粘贴到RangeF2-P2
,即11个单元格中……无论如何,为什么不复制10/11值,然后将它们转置粘贴到单元格F2
?如果您想要更快,请不要逐个单元格复制数据,按组复制它们。@Handreen.Sheets(“MyTest2”)。取消保护“swaf”
开头的
表示它正被With
语句引用,因此它需要紧跟在With
之后。例如,密码似乎给了我某种类型的错误,有什么解决办法吗?我只是稍微修改了你的代码,谢谢你的帮助。密码似乎给了我某种类型的错误,有什么解决办法吗?我只是稍微修改了你的代码,谢谢你的帮助