excel:运行宏后取消选择范围

时间:2017-06-01 14:52:44

标签: excel vba excel-vba

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

每当我更改工作表中的任何单元格时,都会触发以下代码:

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_column宏(将原始工作表中的某些列复制到另一个列)。它发生的第一个代码是因为我想在原始工作表更改时自动更新目标工作表。

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

当我的宏完成时,它允许选择最后一个复制列:

enter image description here

有没有办法在最后取消选择此列?

1 个答案:

答案 0 :(得分:3)

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

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

它更快。