excel:运行macros后取消select范围

我想有一个简单的方法来解决这个问题,但我看不清楚。

每当我更改我的工作表中的任何单元格触发下面的代码:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Target.Worksheet.Range("A:S")) Is Nothing Then copy_column End Sub 

此代码运行我的copy_columnmacros(从我的原始表复制到另一个列)。 第一个代码发生,因为我想在原始表更改时自动更新目标工作表。

 Sub copy_column() Set origem = Sheets("FUNCIONÁRIOS").Range("A4:C1040000") Set destino = Sheets("BASE_TOTAL").Range("A2") origem.Copy destino.PasteSpecial Paste:=xlPasteValues Set origem_subs = Sheets("FUNCIONÁRIOS").Range("S4:S1040000") Set destino_subs = Sheets("BASE_TOTAL").Range("J2") origem_subs.Copy destino_subs.PasteSpecial Paste:=xlPasteValues Set origem_ini_fer = Sheets("FUNCIONÁRIOS").Range("L4:L1040000") Set destino_ini_fer = Sheets("BASE_TOTAL").Range("H2") origem_ini_fer.Copy destino_ini_fer.PasteSpecial Paste:=xlPasteValues Set origem_fim_fer = Sheets("FUNCIONÁRIOS").Range("P4:P1040000") Set destino_fim_fer = Sheets("BASE_TOTAL").Range("I2") origem_fim_fer.Copy destino_fim_fer.PasteSpecial Paste:=xlPasteValues End Sub 

当我的macros完成后,让最后复制的列select像这样:

在这里输入图像描述

有没有办法在最后取消select这一列?

录制macros时按下转义键。 它会给你:

Application.CutCopyMode = False

编辑:一般来说,你的代码不需要复制和粘贴 – 你只需要这些值。 因此,这样的事情将起作用:

 Sub copy_column() Set origem = Sheets("FUNCIONÁRIOS").Range("A4:C1040004") Set destino = Sheets("BASE_TOTAL").Range("A2:P1040002") rngDestino.Value = rngOrigem.Value Set origem_subs = Sheets("FUNCIONÁRIOS").Range("S4:S1040004") Set destino_subs = Sheets("BASE_TOTAL").Range("J2:J1040002") rngDestino.Value = rngOrigem.Value Set origem_ini_fer = Sheets("FUNCIONÁRIOS").Range("L4:L1040004") Set destino_ini_fer = Sheets("BASE_TOTAL").Range("H2:L1040002") rngDestino.Value = rngOrigem.Value Set origem_fim_fer = Sheets("FUNCIONÁRIOS").Range("P4:P1040004") Set destino_fim_fer = Sheets("BASE_TOTAL").Range("I2:P1040002") rngDestino.Value = rngOrigem.Value End Sub 

而且速度更快。