【发布时间】:2020-09-02 08:26:51
【问题描述】:
嗨,我有一个宏,可以将 Sheet1 中的 H 列复制到 Sheet2 中的 F 列,它可以正常工作,能够复制和粘贴所有值,但是在运行宏后在 Sheet1 中选择了 F 列的范围,并且我不知道为什么或如何补救。下面是我的宏,有什么好的灵魂建议吗?
Sub Button1_Click()
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long
Set wsCopy = Worksheets("Sheet1")
Set wsDest = Worksheets("Sheet2")
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "H").End(xlUp).Row
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "F").End(xlUp).Offset(1).Row
wsDest.Range("F2:F" & lDestLastRow).ClearContents
wsCopy.Range("H7:H" & lCopyLastRow).Copy wsDest.Range("F2")
End Sub
【问题讨论】:
-
第一个问题:您真的需要使用比
Range.Value传输更慢的复制/粘贴功能吗? -
嗨@JvdV,只要它实现目标就没有必要,我对VBA相当缺乏经验,上面的代码实际上是从谷歌研究和采摘的,发现除了上述问题外它运行良好.
-
尽可能避免使用 Copy,因为它比告诉 VBA 将一个范围的值放在另一个范围内要慢得多。在下面查看我的答案