Excel VBA セルの値だけをコピーして貼り付ける方法

スポンサーリンク
スポンサーリンク

セルの値だけをコピーして貼り付ける方法

セルの値をコピーして貼り付けるには、セルを表すRange【レンジ】オブジェクトのCopy【コピー】メソッドを使用してコピーして貼り付ける方法がありますが、この方法の場合は指定したセルの内容をすべて(値・セルの色・罫線・数式)貼り付けになり表題の「セルの値だけコピーして貼り付ける」は実現できません。

すべて貼付けの場合のコード

Sub copyメソッド()
Range("B3").Copy Range("C3")
End Sub

このコードの場合はすべて貼り付けになります。

実行結果

セルの値を代入する方法

表題の「セルの値だけをコピーして貼り付ける方法」ではありませんが結果的に、セルの値だけを別のセルに貼り付けるには
代入演算子「=」を使用してセルの値を別のセルに代入する方法が簡単です。

コード例

Sub 代入演算子()
Range("C3").Value = Range("B3").Value
End Sub

コードの解説

代入演算子は右辺の値を左辺に代入します。つまりB3セルの値をC3セルに代入します。
単体のセルの代入の場合は、Range【レンジ】オブジェクトのValue【バリュー】プロパティは省略できますが、セル範囲を代入する場合は必須です。

実行結果

数式を除く値と書式を貼り付ける場合

上記では値のみを貼り付ける(正確には代入する)方法を説明しましたが、書式も引き継ぎたい場合があると思います。
その場合は、Range【レンジ】オブジェクトのPasteSpecial【ペーストスペシャル】メソッドを使用します。

Sub pastespecialメソッド()
Range("B3").Copy
Range("C3").PasteSpecial xlPasteValues
Range("C3").PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End Sub

コードの解説

2行目
【Range(“B3”).Copy】
Range【レンジ】オブジェクトのCopy【コピー】メソッドを使用して、B3セルをコピーします。
引数Destination【ディスティネーション】に貼り付け先を指定しないので、コピーしたデータはクリップボードに保管されます。


3行目
【Range(“C3”).PasteSpecial xlPasteValues】

クリップボードに保管されているデータを指定したセル範囲に貼り付け、内容を指定して貼り付けるには、セルを表Range【レンジ】オブジェクトのPasteSpecial【ペーストスペシャル】メソッドを使用します。
引数のPasteに貼り付ける内容をxlPasteValuesに設定して「値のみ貼り付ける」に設定します。


4行目
【Range(“C3”).PasteSpecial xlPasteFormats】
さらにPasteSpecial【ペーストスペシャル】メソッドの引数Pasteに「書式の貼り付け」を意味する定数のxlPasteFormatsを設定します。
PasteSpecial【ペーストスペシャル】メソッドの貼り付け内容を表す引数Pasteの定数は1つしか設定できないので、複数の定数を設定する場合はこのように、別々に設定する必要があります。


5行目
【Application.CutCopyMode = False】

コピー元のB3セルがコピーモードのままで枠線が点滅しているためApplication【アプリケーション】オブジェクのCutCopyMode【カットコピーモード】プロパティにFalseを設定してコピーモードを解除します。


実行結果


以上で、セルの値だけをコピーして貼り付ける方法についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク