VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
Update 2018/12/12
< Prev Tips
Next Tips>
VBAでセルのコピーをするにはどのようにしたら良いでしょうか?
ここでは以下に示すセルのコピー方法について説明します。
はじめに単一のセルの値をコピーをする方法を見ていきましょう。
書式を以下に示します。
コピー先セル = コピー元セル
例えば、A1セルの値をA3セルにコピーしたい場合は、以下のようにします。
Range("C1") = Range("A1")
実行例を以下に示します。
値コピーですので、7という値だけがコピーされることがわかります。
範囲を指定して値コピーをする場合は以下の書式を使用します。
Range("コピー先のセル範囲").Value = Range("コピー元のセル範囲").Value
この書式を使用する場合はValueプロパティを省略できません。
また、コピー元の範囲サイズとコピー先の範囲サイズは合わせる必要がありますので注意してください。
以下は、A1〜C1の範囲のセルの値を、A3〜C3の範囲にコピーする例です。
Range("A3:C3").Value = Range("A1:C1").Value
実行例を以下に示します。
A1〜C1のセルが、A3〜C3にコピーされていることがわかります。
書式を含めてコピーするには以下の書式を使用します。
expression.Copy コピー先セル
expressionには、ActiveCellやRannge, Cellなどを指定します。
以下は、A1のセルの値を、C1にコピーする例です。
Cells(1, 1).Copy Cells(1, 3)
'以下でも同じ
'Range("A1").Copy = Range("C1")
実行例を以下に示します。
A1のセルが、書式を含めてC1にコピーされていることがわかります。
別のシートに値をコピーするには、上記で学んだコピー方法の手前にワークシートを指定するだけです。
書式を以下に示します。
Worksheets("コピー先シート名").コピー先セル = Worksheets("コピー元シート名").コピー元セル Worksheets("コピー先シート名").Range("コピー先のセル範囲").Value = Worksheets("コピー元シート名").Range("コピー元のセル範囲").Value Worksheets("コピー元シート名").expression.Copy Worksheets("コピー先シート名").コピー先セル
expressionには、ActiveCellやRannge, Cellなどを指定します。
以下は、Sheet1のA1のセルの値を、Sheet2のC1にコピーする例です。
Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("C1")
数式をそのままコピーするには、以下の書式を使用します。
expression = expression.Fomula
expressionには、ActiveCellやRannge, Cellなどを指定します。
以下は、D1の数式を、D3にコピーする例です。
Range("D3") = Range("D1").Formula
実行例を以下に示します。
D1のセルには「=A1*B1」が入っているのですが、D3にも同じ「=A1*B1」がコピーされているのがわかります。
同じ式をコピーするのではなく、相対的にコピーするには以下の書式を使用します。
expression = expression.FomulaR1C1
以下は、D1の数式を、D3にコピーする例です。
Range("D3") = Range("D1").FormulaR1C1
実行例を以下に示します。
D1のセルには「=A1*B1」が入っているのですが、相対的にコピーされるのでD3には「=A3*B3」がコピーされているのがわかります。