vba – マクロからの切り取り、コピー、貼り付け

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 7, 2023

このチュートリアルでは、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を使えば、初心者でも最小限のコーディング知識でゼロからコーディングでき、経験者のユーザーにも有用な、多くの時間節約機能を備えています! alt text もっと詳しく

選択範囲のコピー

アクティブな選択範囲をコピーしたい場合、こちらを使用します。

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

vba clear clipboard

これで、Excelのクリップボードがクリアされます。しかし、Windowsのクリップボードはクリアされません。Windowsのクリップボードをクリアするには、こちらの手順に従ってください。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples