2017-06-01 29 views
2

これを簡単に解決する方法はあると思いますが、わかりません。私は私の中にシートの任意のセルを変更excel:マクロを実行した後に範囲を選択解除する

毎回それは以下のコードトリガー:

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

が最後にこのコラムの選択を解除する方法はありますか?

+0

マクロを記録するときにエスケープキーを押します。それは 'application.cutcopymode = false'を与えるでしょう – Vityata

+0

いくつかの方法があります。あなたは 'Cell(1,1).Select'を実行して' A1'か 'Ap​​plication.CutCopyMode = False'を簡単に行うことができます。 – BruceWayne

答えて

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 

これは高速です。

+2

注 - OPからは分かりませんが、"列を選択解除 "したい場合は、最後に 'Cells(1,1).Select'と言うだけでうまくいくでしょう。 'CutCopyMode'はコピー範囲を選択解除しますが、その範囲を選択したままにします。 – BruceWayne

+0

@ BruceWayne - 私はもっと同意できません。 – Vityata

+1

@BruceWayneはい、それは真実です、私が解決策をテストしていたときに気づきました。とにかく、両方のおかげで! – paulinhax

関連する問題