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

pau*_*hax 3 excel vba

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

\n\n

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

\n\n
Private Sub Worksheet_Change(ByVal Target As Range)\nIf Not Intersect(Target, Target.Worksheet.Range("A:S")) Is Nothing Then \ncopy_column\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

这段代码运行我的copy_column宏(将某些列从原始工作表复制到另一个)。第一个代码之所以发生,是因为我想在原始工作表更改时自动更新目标工作表。

\n\n
Sub copy_column()\n\nSet origem = Sheets("FUNCION\xc3\x81RIOS").Range("A4:C1040000")\nSet destino = Sheets("BASE_TOTAL").Range("A2")\norigem.Copy\ndestino.PasteSpecial Paste:=xlPasteValues\n\nSet origem_subs = Sheets("FUNCION\xc3\x81RIOS").Range("S4:S1040000")\nSet destino_subs = Sheets("BASE_TOTAL").Range("J2")\norigem_subs.Copy\ndestino_subs.PasteSpecial Paste:=xlPasteValues\n\nSet origem_ini_fer = Sheets("FUNCION\xc3\x81RIOS").Range("L4:L1040000")\nSet destino_ini_fer = Sheets("BASE_TOTAL").Range("H2")\norigem_ini_fer.Copy\ndestino_ini_fer.PasteSpecial Paste:=xlPasteValues\n\nSet origem_fim_fer = Sheets("FUNCION\xc3\x81RIOS").Range("P4:P1040000")\nSet destino_fim_fer = Sheets("BASE_TOTAL").Range("I2")\norigem_fim_fer.Copy\ndestino_fim_fer.PasteSpecial Paste:=xlPasteValues\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我的宏完成时,它会选择最后复制的列,如下所示:

\n\n

在此输入图像描述

\n\n

有什么办法可以在最后取消选择此列吗?

\n

Vit*_*ata 5

录制宏时按 Esc 键。\n它会给你:

\n\n

Application.CutCopyMode = False

\n\n

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

\n\n
Sub copy_column()\n\n    Set origem = Sheets("FUNCION\xc3\x81RIOS").Range("A4:C1040004")\n    Set destino = Sheets("BASE_TOTAL").Range("A2:P1040002")\n    destino.Value = origem.Value\n\n    Set origem_subs = Sheets("FUNCION\xc3\x81RIOS").Range("S4:S1040004")\n    Set destino_subs = Sheets("BASE_TOTAL").Range("J2:J1040002")\n    destino_subs.Value = origem_subs.Value\n\n    Set origem_ini_fer = Sheets("FUNCION\xc3\x81RIOS").Range("L4:L1040004")\n    Set destino_ini_fer = Sheets("BASE_TOTAL").Range("H2:L1040002")\n    destino_ini_fer.Value = origem_ini_fer.Value\n\n    Set origem_fim_fer = Sheets("FUNCION\xc3\x81RIOS").Range("P4:P1040004")\n    Set destino_fim_fer = Sheets("BASE_TOTAL").Range("I2:P1040002")\n    destino_fim_fer.Value = origem_fim_fer.Value\n\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

而且速度更快。

\n

  • 注意 - OP 不清楚,但如果他们想“取消选择列”,那么也许只需在末尾添加“Cells(1,1).Select”即可。`CutCopyMode` 只会取消选择复制范围,但仍保持选中该范围。 (4认同)