Excel VBAで他のシートの値をコピーして貼り付ける方法

Visual Basic

Excel VBAを使用して、あるシートの値を他のシートにコピーする方法は非常に便利です。特に、式があるセルの値をコピーして貼り付けたい場合、少し工夫が必要になります。この記事では、シート間でセルの数式を移動させず、実際の値だけをコピーする方法を解説します。

1. VBAでセルの値をコピーする基本的な方法

Excel VBAを使用して、シート間でセルの値をコピーする基本的な方法は以下の通りです。まず、VBAエディタを開き、コピーしたい範囲を指定し、その後別の範囲に値を貼り付けるコードを記述します。しかし、この時に注意しなければならないのは、数式ではなく「値」をコピーする点です。

2. 数式ではなく値をコピーするための方法

シート間で数式をコピーすると、参照されるシートやセルがそのまま維持されるため、希望する値が貼り付けられません。これを解決するためには、数式の代わりに「値」をコピーする必要があります。VBAでは、Valueプロパティを使って実際の値だけをコピーできます。

以下のコードで、シート1のセルN32の値をシート2のセルE20にコピーできます。
Sheet2.Range("E20").Value = Sheet1.Range("N32").Value

3. あなたのVBAコードの修正方法

質問者が提供したVBAコードを修正し、シート2のD40セルから値だけをシート2のE20にコピーする方法を示します。以下のように修正することで、数式ではなく値をコピーできます。

Sub 移動_Click()
Range("D40:D41").Copy
Range("E20:E21").PasteSpecial Paste:=xlPasteValues
End Sub

このコードでは、PasteSpecialメソッドを使用して、コピーしたセルの「値」だけを貼り付けます。これにより、数式ではなく、シート1のセルN32に表示されている値がシート2のE20に正しくコピーされます。

4. まとめ

Excel VBAを使用してシート間で数式ではなく値をコピーするためには、PasteSpecialメソッドを使用するのが一般的です。これを使うことで、数式をコピーするのではなく、実際の値だけを移動させることができます。VBAでの操作に慣れていない場合でも、この方法を使えば簡単に値のコピーを実行できるようになります。

コメント

タイトルとURLをコピーしました