今回はVBAで頻繁に使用することになる「コピー」についての解説です。
「値のみ」をコピーしたい場合は以前も説明した【.Value = .Value】の処理が一番早く、軽いです。基本的にはコチラを習得すれば良いと思います。
ただ、この【.Value = .Value】では「値以外」のコピーは出来ません。書式や数式が必要な場合は「Copy」メソッドが必要になります。
この記事があなたのお役に立てれば幸いです。
この解説はGeminiPROに作成して貰っています。
1. VBAの「Copy」で出来ること
一言で言うと、「セルの内容も見た目も、丸ごとコピー機にかける」機能です。
以前解説した【.Value = .Value】 は、「隣の席の人に、ノートの内容を文字だけ書き写してあげる」ようなものです。 それに対して Copy メソッドは、「ノートのページを丸ごとカラーコピーして、別の場所にペタッと貼り付ける」ようなイメージです。文字だけでなく、ペンの色、蛍光ペンの跡、枠線まで一瞬で再現できます。
2. 基本の書き方
コピー元.Copy コピー先
例題:A1セルの「文字・色・枠線」をすべてB1セルにコピーする場合
VBA
Range("A1").Copy Destination:=Range("B1")
※ Destination:= は省略して Range("A1").Copy Range("B1") と書いてもOKです。
3. なぜ「.Value = .Value」ではダメだったのか?
Excelのセルは、「中身(値)」と「洋服(書式)」の2層構造になっています。
.Value = .Value: 中身(数字や文字)だけを移動させます。洋服(背景色や太字)は脱ぎ捨ててしまうので、コピー先は「すっぴん」の状態になります。Copyメソッド: 中身も洋服もセットで移動させます。
4. 使うための準備
- 必要なExcelバージョン: すべてのバージョン(Excel 97から最新のMicrosoft 365まで)で動きます。まさに不朽の名作コードです。
- 前提として知っておくこと:
- Range(レンジ): 「どのセルを指すか」という指定方法。
- コピー後の「点々」: 普通に手動でコピーした時と同じように、コピー元のセルが点々で囲まれることがあります。これを消したい時は、コードの最後に
Application.CutCopyMode = Falseと1行足してあげると、後片付けまで完璧な「プロの仕事」になります。



コメント