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_column
macros(从我的原始表复制到另一个列)。 第一个代码发生,因为我想在原始表更改时自动更新目标工作表。
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
而且速度更快。