セルのコピペをマクロの記録機能で保存するとCutCopyModeが記録される

セルをコピペする操作をマクロの記録で保存すると以下のようなコードが記録されます。

大体の内容はコードからSelectやCopyやPasteといったメソッドで、コピペしてるな、とわかるのですが、Application.CutCopyModeは何なんでしょうか。

上の黄色の「Application.CutCopyMode = False」ですが、これはコピーや切り取りを行ったことを無効にして、セル範囲の枠線の点滅表示を無しにしています。

処理自体は1行ですが、CutCopyModeは使い方が特殊なプロパティです。

コードを書く際の候補表示が間違っていたり、ヘルプの内容も間違えていたりと、バグがありつつヘルプもバグってるというなんともややこしいプロパティです。


CutCopyModeの設定と参照

以下はCutCopyModeのヘルプです。書いている内容が不親切で、見た人の混乱をまねく恐れがとても高い内容です。
https://msdn.microsoft.com/ja-jp/library/office/ff839532.aspx?f=255&MSPPError=-2147217396

正しくは以下になります。

CutCopyModeの設定

コードでCutCopyModeに設定する場合はFalseしか設定できません。正確にはTrueもxlCopyもxlCutも100でも-0.5でも、数値は何でも設定できるのですが、何を設定してもFalseとして扱われます

「Application.CutCopyMode =」と書くと選択候補にxlCopyとxlCutが表示されます。

しかし、どちらを設定してもFalseとして扱われます。設計ミスによるバグというか仕方無しの実装でしょうね。想定外の設定が行われた場合はエラーや例外を発生させるべきでしょうね。

定数 内容
False 切り取りまたはコピーしているセル範囲の枠線を点滅表示を消します。設定後はコピーモード(xlCopy)や切り取りモード(xlCut)の判定は出来なくなります。

実行結果(全部0=Falseが設定されていることを示しています)
0
0
0
0
0
0


CutCopyModeの参照

単一セルやセル範囲のコピーや切り取りを行った直後に、どちらを行ったのかを判定できます。

定数 内容
xlCopy 1 コピーしていることを表します。
xlCut 2 切り取りをしていることを表します。

実行結果
1
2