2017-05-05 17 views
0

VBAマクロコードがあります。主な目的は、ワークブックから別のワークブックにデータをコピーすることです。行だけが変化します。マクロは、宛先シートで条件付き書式設定を行うまでは十分速かった。VBAマクロの実行中に「すべて」をオフにする

私の質問は、マクロが実行されている間にExcelで各側の操作を無効にする方法があるかどうかです。今、私はこれらを無効:

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Application.EnableEvents = False 

しかし、私は、私はより速くそれを作るために多くをオフにすることができると思います。助言がありますか?

+1

'application.Calculation = xlCalculationManual' – YowE3K

+0

YowE3Kはちょうど' Application.Calculation = xlAutomatic' – Jeremy

+1

条件付き書式は、途方もなく、ブックのサイズが大きくなり、そして、あなたの場合には、さらに多くのだろうと背中にそれを回すために覚えている、と述べた@何マクロはループ内で一度に1行を追加します。計算をオフにしてもExcelがすべての計算をやめてフォーマットに関連するすべてのデータを記録するのを止めるわけではありませんが、大きなデータを一度に貼り付けたり、貼り付けを完了した後で条件付き書式を適用したり条件付き書式を取り除き、VBAを使用して必要な書式を適用します。 – Variatus

答えて

1

あなたは...標準モジュールに

Sub TurnEverythingOff() 
With Application 
    .Calculation = xlCalculationManual 
    .EnableEvents = False 
    .DisplayAlerts = False 
    .ScreenUpdating = False 
End With 
End Sub 

Sub TurnEverythingOn() 
With Application 
    .Calculation = xlCalculationAutomatic 
    .EnableEvents = True 
    .DisplayAlerts = True 
    .ScreenUpdating = True 
End With 
End Sub 

を、次の2つのコードを持つことができます。そして、あなたが以下のようなあなたのサブ・ルーチンにそれらを呼び出すことができます...

Sub YourMacro() 
'variable declaration section 

TurnEverythingOff 
On Error GoTo Skip 'if an error occurs, this makes sure that everything is turned on back 
'other stuff here 

Skip: 
TurnEverythingOn 
End Sub 

限り条件付き書式については、未使用の範囲に適用しないでください。つまり、条件付き書式設定の行全体または列全体を参照しないでください。つまり、シート上のデータを含む範囲に制限します。

関連する問題