- ベストアンサー
ExcelVBAのCutCopyModeについて
- ExcelVBAのCutCopyModeについての質問です。VBAで使用されるプロパティについて調べていましたところ、CutCopyModeについて「コピー状態を削除する為のプロパティ」との記載がありました。
- こちらのプロパティを使ってコピーを削除する理由をご教示頂きたいです。通常のExcelだとコピーをした後別の部分をコピーをしたら上書きされる為、削除の必要は無いと思うのですが、何故VBAだと削除が必要になるのでしょうか?
- 個人的には「動作の軽量化」「エラー防止」「コピーが上書きされない」のどれかが理由ではないかと睨んでいますが果たして合っているのかどうか…
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro1() ' [A1:C3].Copy [A11].PasteSpecial End Sub 行ってみて下さい。緑の点線が残っています。 このままだと、ついうっかり、別のところへペーストしてしまう危険があります。見た目も悪いし、マクロ実行後に、こんなものが残っていたら、何で?と思います。 CutCopyMode = False を入れておけばこの危険はなくなります。 危険防止と見た目ですね。 通常のエクセルでも、コピーの後、Esc を押すか、どこかのセルに入力するかで、コピーモードを解除していると思います。この作業です。 Sub Macro2() ' [A1:C3].Copy [A11] End Sub の書き方であれば、緑の点線は残らないのでいりません。
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1733/2603)
> コピー状態を削除する為のプロパティ 削除ではなくて解除の間違いではありませんか。 コピー貼り付けをするとコピーしたセルが点線で囲まれて、連続して貼り付けができます。貼り付けが終わったのに点線で囲まれたままにしたくない場合それを解除するために利用します。 ちなみにTest()は成功しますがTest2()は解除した後に貼り付けをしてるのでエラーになります。 Sub Test() Range("A1").Copy Range("B1").PasteSpecial Range("C1").PasteSpecial End Sub Sub Test2() Range("A1").Copy Range("B1").PasteSpecial Application.CutCopyMode = False Range("C1").PasteSpecial End Sub
お礼
ご回答ありがとうございます! ご指摘いただき確認したところ、削除ではなく解除でした。 誤った記載をしてしまい申し訳ありません。 私自身、誤ったままで覚えかけていましたので本当に助かりました。 どうして利用するのか、またコードについて例をつけて説明をしてくださってありがとうございます。 kkkkkmさんに貼って頂いたコードの単語の意味等を調べて解読して、何が違うのか一度自分で分析してみます! ありがとうございました!
お礼
ご回答ありがとうございます! 今は出先なので試せませんが帰宅次第SI299792さんに貼って頂いたコードを試してみます。 理由は危険防止と見た目なんですね、なるほど… 確かに私も実行完了後に緑の点線が残ってたら疑問に思います。 見た目という点を除いても、マクロ完了後のミスを防ぐ為にはCutCopyModeをつけた方が安全なんですね。 分かりやすく解説してくださりありがとうございました!