'指定セルのコピーを直接貼り付けする Range("A1").Copy Range("A2")
'選択セルをクリップボードにコピー Selection.Copy 'B1を選択する(貼り付け先) Range("A3:A6").Select 'コピーデータを貼り付ける ActiveSheet.Paste 'コピーモードを終了する(点線が消える) Application.CutCopyMode = False
セルのコピーと貼り付けには「Copy」を使用します
引数に貼り付け先のアドレスを指定することが出来ますので、ここを指定するとコピーと同時に貼り付けを行うことが出来ます
この引数は省略可能で、省略した場合はクリップボードにデータが貼り付けられます
なお、画像の動きではスクショを撮るためにクリップボードを使用しているせいで、コピー対象先の点線の枠線が表示されていませんが実際にコードを実行すると表示され最後に消えます
通常のコピペ操作は1つ目の1行で実行すればいいです、クリップボードも経由しないのでこちらのほうが処理が速くてコピーモードの操作も必要ないからです
2つ目のコードはマクロの記録の際に出てくるコードです
実際こちらのほうが、Excelの操作と同じ手順にコードを実行していくのでイメージがしやすく作りやすい可能性もありますので、あえてこちらを使うのもいいと思います、可読性は処理速度並みに重要です
省略した「Copy」メソッドを実行するとコピーモードに入ります、コピー部分が点線に囲まれる状態です
次にデータを貼り付ける先を選択状態にします、1つ目でも同じですがここで範囲選択をしておくと、その範囲すべてに貼り付けが実行されます
選択したセルからコピーしたデータを貼り付けます
コピーが終わったら、コピーモードを終了します(コピー状態の点枠線が消える)
このコピーはセルのコピーなので値だけでなく書式も含めてコピーされます
また数式の場合は、通常のコピー同様に引数がセルなら更新されます
なお、この「ActiveSheet.Paste」は、対象オブジェクトがRangeではなくSheetに対して行っています
これはセルのみではなく図形や画像などのオブジェクトに対しても行う貼り付けとなっているためです
なので、Rangeオブジェクトに対して貼り付けの操作は実行できません
最後の「Application.CutCopyMode = False」は無くても問題ありませんが、そのままだとセルをEnterキーで貼り付けされてしまうし、点線が残ったままなのも少し気持ち悪いです
なので、セルのコピーはここまでをセットに行います