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:=xlPasteValuesEnd Sub
このコードでは、PasteSpecialメソッドを使用して、コピーしたセルの「値」だけを貼り付けます。これにより、数式ではなく、シート1のセルN32に表示されている値がシート2のE20に正しくコピーされます。
4. まとめ
Excel VBAを使用してシート間で数式ではなく値をコピーするためには、PasteSpecialメソッドを使用するのが一般的です。これを使うことで、数式をコピーするのではなく、実際の値だけを移動させることができます。VBAでの操作に慣れていない場合でも、この方法を使えば簡単に値のコピーを実行できるようになります。


コメント