vba – マクロからの切り取り、コピー、貼り付け
In this Article
このチュートリアルでは、VBAマクロを使用してコピー&ペースト(コピーして貼り付け)とカット&ペースト(切り取って貼り付け)を行ういくつかの異なる方法を学習します。より高度なコピー&ペーストのオプションについては、付属のチュートリアル値の貼り付けとPasteSpecialをお読みください。
このコードを使用するにはVisual Basic Editor(Alt + F11) を開き、新しいモジュールを挿入し(挿入 > 標準モジュール)、目的のコードを標準モジュールにコピー&ペーストします。
1つのセルをコピー(切り取り)して貼り付ける
この例では、1つのセルA1をB1にコピーまたは切り取って貼り付けています。
Sub Paste_OneCell()
'単一セルのコピー&ペースト
Range("A1").Copy Range("B1")
'単一セルのカット&ペースト
Range("A1").Cut Range("B1")
End Sub
VBAのコーディングが簡単に
VBAのコードをネットで探すのはもうやめましょう。AutoMacroに含まれるVBA Code Builderを使えば、初心者でも最小限のコーディング知識でゼロからコーディングでき、経験者のユーザーにも有用な、多くの時間節約機能を備えています! もっと詳しく
選択範囲のコピー
アクティブな選択範囲をコピーしたい場合、こちらを使用します。
Sub CopySelection()
'指定した範囲に貼り付ける
Selection.Copy range("b1")
'オフセットペースト - 下に2つ、右に1つずれた位置に貼り付ける)
Selection.Copy
Selection.offset(2,1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
セルの範囲をコピー(切り取り)して貼り付ける
この例では、セル範囲 A1:A3 を B1:B3 にコピーまたは切り取って貼り付けています。
Sub Paste_Range()
'セル範囲のコピー&ペースト
Range("A1:A3").CopyRange("B1:B3")
'セル範囲のカット&ペースト
Range("A1:A3").Cut Range("B1:B3")
End Sub
列全体をコピー(切り取り)して貼り付ける
以下では、いくつかの簡単な例を示します。詳細な例や説明については、行と列のコピー/貼り付けの記事をお読みください。 この例では、A列をB列にコピーまたは切り取って貼り付けています。
Sub PasteOneColumn()
'列のコピー&ペースト
Range("A:A").Copy Range("B:B")
'列のカット&ペースト
Range("A:A").Cut Range("B:B")
End Sub
行全体をコピー(切り取り)して貼り付ける
この例では、行全体をコピーまたは切り取って、1行目を2行目に貼り付けます。
Sub Paste_OneRow()
'行のコピー&ペースト
Range("1:1").Copy Range("2:2")
'行のカット&ペースト
Range("1:1").Cut Range("2:2")
End Sub
別のワークシートまたはワークブックにコピー(切り取り)して貼り付ける
Sub Paste_Other_Sheet_or_Book()
'別のワークシートにコピーまたは切り取って貼り付ける
Worksheets("sheet1").Range("A1").Copy Worksheets("sheet2").Range("B1") 'コピー
Worksheets("sheet1").Range("A1").Cut Worksheets("sheet2").Range("B1") '切り取り
'別のワークブックにコピーまたは切り取って貼り付ける
Workbooks("book1.xlsm").Worksheets("sheet1").Range("A1").Copy _
Workbooks("book2.xlsm").Worksheets("sheet1").Range("B1") 'コピー
Workbooks("book1.xlsm").Worksheets("sheet1").Range("A1").Cut _
Workbooks("book2.xlsm").Worksheets("sheet1").Range("B1") '切り取り
Application.CutCopyMode = False
End Sub
値の貼り付け
通常、コピー&ペーストを行うと、セルのすべてのプロパティ(書式、数式など)がペーストされます。値の貼り付けでは、セルの値をコピーして貼り付けるだけで、それ以外のことはできません。VBAで値の貼り付けを行う最も簡単な方法は、セルの値を直接指定することです。
Sub ValuePaste()
'セルの値の貼り付け
Range("B1").value = Range("A1").Value
Range("B1:B3").value = Range("A1:A3").Value
'ワークシート間で値を設定する
Worksheets("sheet2").Range("A1").Value = Worksheets("sheet1").Range("A1").Value
'ワークブック間の値の設定
Workbooks("book2.xlsm").Worksheets("sheet1").Range("A1").Value = _
Workbooks("book1.xlsm").Worksheets("sheet1").Range("A1").Value
Application.CutCopyMode = False
End Sub
特殊な貼り付け
特殊な貼り付けでは、セルの特定のプロパティ(例:フォーマット、値、列の幅など)をコピー&ペーストすることができます。また、それ以外の特別な貼り付け操作を行うこともできます(例:空白のスキップ、転置)。以下、いくつかの例を見ていきますが、詳細については、値の貼り付けとPasteSpecialのチュートリアルをお読みください。
Sub PasteSpecial()
'コピーを1回行う。
Range("A1").Copy
'書式を貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteFormats
'列の幅を貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteColumnWidths
'数式を貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteFormulas
'複数の特殊な貼り付け操作を一度に実行する
Range("A1").Copy
'転置して書式を貼り付ける
Range("B1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:= _.
False, Transpose:=True
Application.CutCopyMode = False
End Sub
クリップボードをクリアする
コピー&ペーストを行った後、クリップボードをクリアしたい場合があります(上記のコード例の一部で行っています)。 Excelのクリップボードをクリアするには、Application.CutCopyModeをFalseに設定します。
Application.CutCopyMode = False
これで、Excelのクリップボードがクリアされます。しかし、Windowsのクリップボードはクリアされません。Windowsのクリップボードをクリアするには、こちらの手順に従ってください。