Excel - VBA - 范围选择减慢了PC的速度

时间:2014-10-06 15:10:33

标签: excel-vba range vba excel

有没有办法将这些命令变成一个?

Worksheets("Agent html").Select
Range(Cells(7, TotalCallsRow), Cells(lastrow, TotalCallsRow)).Copy

当我给:

Worksheets("Agent html").Range(Cells(7, TotalCallsRow), Cells(lastrow, TotalCallsRow)).Copy

它返回错误

应用程序定义或对象定义错误。

提前致谢。

2 个答案:

答案 0 :(得分:1)

应该是:

Worksheets("Agent html").Range(Worksheets("Agent html").Cells(7, TotalCallsRow), Worksheets("Agent html").Cells(lastrow, TotalCallsRow)).Copy

将工作表定义为对象变量可能更清晰,如:

Dim ws As Worksheet
Set ws = Worksheets("Agent html")

ws.Range(ws.Cells(7, TotalCallsRow), ws.Cells(lastrow, TotalCallsRow)).Copy

答案 1 :(得分:0)

您在Cells内使用Range,我不确定是否允许这样做。无论哪种方式,请尝试不使用.Select

Dim wksht As Worksheet
Set wksht = Worksheets("Agent html")
Dim rng As Range
rng = wksht.Range(Cells(7, TotalCallsRow), Cells(lastrow, TotalCallsRow))
rng.Copy

如果没有选择任何内容,你会做上面提出的问题。我没有对Range(Cells进行测试,但由于我不知道TotalCallsRow是什么,我无法提供帮助?