VBA Application.CutCopyMode = False:これは何でしょうか?
In this Article
VBA Application.CutCopyMode = False
コピー&ペーストをしながらマクロを記録したことがある人は、次のような行を見たことがあるのではないでしょうか。
Application.CutCopyMode = False
この行は、クリップボードを「クリア」するコードです*。Excelのセルをコピーした場合、このコード行を実行すると、コピーしたセルの周りのアニメーションが削除されます。
CutCopyModeは、Microsoft Officeプログラム(Excelなど)がカットモードかコピーモードかを示す、アプリケーションレベルのプロパティです。 コピー(またはカット)モードでは、Excelのクリップボードに何かが保存され、貼り付けることができます。
しかし、Application.CutCopyModeをTrueに設定する必要がある場面というのは、私はないだろうと考えています。
CutCopyMode = Falseにしない方法
VBAのコピー&ペーストのベストプラクティスを使用すれば、通常、Application CutCopyMode = Falseを設定する必要はありません。たとえば、次のコードでは、1行でセルをコピーして貼り付けるので、CutCopyModeをFalseに設定する必要はありません。
Sub CopyPaste_OneLine()
Range("a1").Copy Range("b1")
End Sub
Application.CutCopyModeのステータスを取得する
Application.CutCopyModeのステータスを取得したい場合があります。クリップボードに何もないときに貼り付けようとすると、エラーが発生するのを防ぐためかもしれません。ステータスを取得するには、次のコードを使用します。
Sub Get_Application_CutCopyMode_Status()
Select Case Application.CutCopyMode
Case Is = xlCopy
MsgBox "コピーモード"
Case Is = xlCut
MsgBox "カットモード"
Case Is = False
MsgBox "カットモードでもコピーモードでもない"
Select End
End Sub
*Application.CutCopyModeは、Microsoft Officeアプリ(Excelなど)のクリップボードのみをクリアし、Windows OSのクリップボードはクリアされません。VBAを使用してWindowsのクリップボードをクリアする方法については、詳しくはリンクをクリックしてください。