Sample Macro  コピー [基本型] Previous Next

1) すべてコピー、切り取りする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub セルをコピーする()
    Range("A1:C3").Copy Range("A4")             '※2、3
End Sub
'---------------------------------------------------------------------------------
Sub コピーして貼り付ける()
    Worksheets("SSS").Activate                  'ワークシートをアクティブにする ※1
    Range("A1:C3").Copy                         'コピーする ※2
    Range("A4").Select                          '貼り付け先のセル範囲を選択する ※3
    ActiveSheet.Paste                           '現在の選択範囲に貼り付ける
End 
'---------------------------------------------------------------------------------
Sub コピーして別のシートに貼り付ける()
    Worksheets("SSS").Activate                  'ワークシートをアクティブにする ※1
    Range("A1:C3").Copy                         'コピーする ※2
    ActiveSheet.Paste Destination:=Worksheets("SS2").Range("A4") '貼り付ける ※3、4
End Sub
'---------------------------------------------------------------------------------
Sub 使われたセル範囲をコピーして別のシートに貼り付ける()
    Worksheets("SSS").UsedRange.Copy            '※1
    ActiveSheet.Paste Destination:=Worksheets("SS2").Range("A1") '貼り付ける ※3、4
End Sub
'---------------------------------------------------------------------------------
Sub クリップボードを経由せずにコピー貼り付けする_同一ブック()
    Worksheets("SSS").Range("A1:C3").Copy _
    Destination:=Worksheets("SS2").Range("A4") '※1、2、3、4、5
End Sub
'---------------------------------------------------------------------------------
Sub クリップボードを経由せずにコピー貼り付けする_異なるブック()
    Workbooks("BBB.xls").Worksheets("SSS").Range("A1:C3").Copy _
    Workbooks("BB2.xls").Worksheets("SS2").Range("A4") '※1、2、3、4
End Sub
'---------------------------------------------------------------------------------
Sub 切り取ってクリップボードに保存する()
    Worksheets("SSS").Range("A1:C3").Cut        '※1、2
End Sub
'---------------------------------------------------------------------------------
Sub シートを新しいブックにコピーする()
    Worksheets("SSS").Copy                      '※1
    ブック名 = ActiveWorkbook.Name              '新しいブック名(必要なら)
End Sub
'=================================================================================
<コメント>
※1 SSS、SS2にはシート名を、BBB、BB2にはブック名を記入
※2 A1:C3にはコピーする範囲を記入
※3 A4には貼り付けるセルの左上を記入
※4 Copyメソッドの前部にはコピー元を、後部には貼り付け先を記入
※5 セル範囲を変数で指定するサンプルは こちら

1-2) すべてコピーする (Excel95文法) このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub コピーしてすべて貼り付ける()
    Sheets("SSS").Select                        'シートを選択する ※1
    Range("A1:C3").Copy                         'コピー ※2
    Range("A4").PasteSpecial Paste:=xlAll       'すべて貼り付け ※3
End Sub
'=================================================================================
<コメント>
※1 SSS、SS2にはシート名を記入
※2 A1:C3にはコピーする範囲を記入
※3 A4には貼り付けるセルの左上を記入


2) データを移動する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub アクティブシートから指定したシートへデータを移動する()
    Worksheets("SSS").Activate                  '※1
    ActiveSheet.Range("C1:C3").Cut Destination:=Worksheets("SS2").Range("A1")
        'C1:C3セルの内容をSSSシートのA1セルを先頭にして移動する ※1、2
End Sub
'---------------------------------------------------------------------------------
Sub 指定したシートからアクティブシートへデータを移動する()
    Worksheets("SSS").Activate                  '※1
    Worksheets("SS2").Range("A1:A3").Cut Destination:=ActiveSheet.Range("A1")
        'SS2シートのA3セルの内容をアクティブシートのC1セルを先頭にして移動する ※1、2
End Sub
'---------------------------------------------------------------------------------
Sub 指定したシートからアクティブシートへデータを移動する()
    Worksheets("SSS").Activate                  '※1
    Worksheets("SS2").Range("A1:A3").Cut Destination:=ActiveSheet.Range("A1")
        'SS2シートのA1:A3セルの内容をアクティブシートのC1セルを先頭にして移動する ※1、2
End Sub
'=================================================================================
<コメント>
※1 SSS、SS2にはシート名を記入
※2 A1:A3、C1:C3には移動元範囲を、A1、C1、には移動先範囲を記入する


3) 形式を選んで貼り付ける このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 形式を選んで貼り付ける_97later()
    Worksheets("SSS").Activate                  'ワークシートをアクティブにする ※1
    Range("A1:C3").Copy                         'コピーする ※2
    Range("A4").PasteSpecial Paste:=xlPasteValues '値を貼り付け ※3
End Sub
'=================================================================================
<コメント>
※1 SSSにはワークシート名を記入
※2 A1:C3にはコピーする範囲を記入
※3 引数 Pasteの:= の後ろには、 いずれかの定数を記入 (省略すると xlPasteAll)


3-2) 形式を選んで貼り付ける (Excel95文法) このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 形式を選んで貼り付けるいろいろな方法()
    Range("A4").PasteSpecial Paste:=xlValues    '値を貼り付け ※1
    Range("A4").PasteSpecial Paste:=xlFormulas  '数式を貼り付け ※1
    Range("A4").PasteSpecial Paste:=xlFormats   '書式だけ貼り付け ※1
    Range("A4").PasteSpecial Paste:=xlNotes     'メモ貼り付け ※1
    Range("A4").PasteSpecial Paste:=xlAllExceptBorders '罫線を除くすべて貼り付け ※1
End Sub
'=================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入、※1はマッチする方法を1つ選んで使用


4) 値だけを残して数式を削除する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 数式セルで演算結果の値だけを残して数式を削除する()
    セル範囲 = "C1:C1"                          '※1
    Range(セル範囲).Value = Range(セル範囲).Value '※2
End Sub
'=================================================================================
<コメント>
※1 例えば A1セルに1、B1に2、C1に数式 =A1+B1 が入力されているとすると
※2 C1セルには値の 3 が残る(数式は削除される)


5) 指定したセル範囲の値を等しくする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 指定したセル範囲の値を等しくする_同一シート()
    Worksheets("SSS").Activate                  '※1
    コピー元セル範囲 = "A1:C1"                  '※2
    貼り付け先セル範囲 = "A2:C2"                '※3
    Range(貼り付け先セル範囲).Value = Range(コピー元セル範囲).Value
End Sub
'---------------------------------------------------------------------------------
Sub 指定したセル範囲の値を等しくする_異なるシート()
    コピー元セル範囲 = "A1:C1"
    貼り付け先セル範囲 = "A2:C2"
    Worksheets("SS2").Range(貼り付け先セル範囲).Value _
        = Worksheets("SSS").Range(コピー元セル範囲).Value '※4
End Sub
'=================================================================================
Sub 選択されたセル範囲の値を指定セルを左上端にして貼り付ける()
    貼り付けセル = "A5"                         '※5
    With Selection
        Range(貼り付けセル).Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入
※2 A1:C1にはコピー元のセル範囲を記入
※3 A2:C2には貼り付け先のセル範囲を記入
※4 SS2には貼り付け先の、SSSにはコピー元のシート名を記入
※5 A5には貼り付け先セル範囲の左上端セルを記入


6) 空白セルを無視して値を貼り付ける このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 空白セルを無視して値を貼り付ける()
    Range("A4").PasteSpecial Paste:=xlValues, SkipBlanks:=True '※1
End Sub
'=================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_mushi.xls 36KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


7) 行列を入れ替えて値と書式を貼り付け このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 行列を入れ替えて値を貼り付ける()
    Range("A4").PasteSpecial Paste:=xlValues, Transpose:=True '※1
End Sub
'---------------------------------------------------------------------------------
Sub 行列を入れ替えて書式を貼り付ける()
    Range("A4").PasteSpecial Paste:=xlFormats, Transpose:=True '※1
End Sub
'=================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_irekae.xls 38KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


8) 指定した行へ貼り付ける このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 指定した行へ貼り付ける()
    Worksheets("月間").Activate                 '貼り付けるシートをアクティブにする
    行 = Worksheets("入力").Cells(2, 1)         'A2セルの値を変数「行」に取り出す
    行 = 行 + 1                                 '「行」に 1を加える ※1
    Worksheets("入力").Range("B2:C2").Copy      '入力シートのB2:C2セルをコピーする
    Worksheets("月間").Range(Cells(行, 2), Cells(行, 2)).Select '月間シートのB列の「行」で
                                                                指定された行を選択する
        Selection.PasteSpecial Paste:=xlValues  '値を貼り付ける
End Sub
'=================================================================================
<コメント>
※1 見出しが1行目にあるため
※2 このマクロは入力シートの A2セルの値により、月間シートの対応する日付の行に貼り付ける
入力シート→入力シート  月間シート→月間シート

9) リンク貼り付けする このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub リンク貼り付けする()
    Range("A4").Select                          '※1
    ActiveSheet.Paste Link:=True
End Sub
'=================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_link.xls 35KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


10) コピーモードを解除する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub コピーモードを解除する()
    Sheets("SSS").Select                        '※1
    Application.CutCopyMode = False
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入


11) コピー貼り付けを禁止する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.CutCopyMode <> False Then
        Application.CutCopyMode = False
    End If
End Sub
'=================================================================================
<コメント>
※1 このマクロは禁止したいシートのコード画面で作成する


12) クリップボードの内容を確認する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub クリップボードの内容がテキストならセルに貼り付ける()
    クリップ配列 = Application.ClipboardFormats '※1
    For Each クリップデータ In クリップ配列      '取得した配列の各要素に対して繰り返す
        If クリップデータ = xlClipboardFormatText Then  '※2 テキストなら
            Range("A1").PasteSpecial Operation:=xlPasteAll '貼り付ける
        End If
    Next
End Sub
'---------------------------------------------------------------------------------
Sub クリップボードが空か調べる()
    クリップ配列 = Application.ClipboardFormats
    If クリップ配列(1) = -1 Then
        MsgBox "クリップボードは空です。"
    End If
End Sub
'=================================================================================
<コメント>
※1 ClipboardFormatsプロパティは、クリップボードにあるオブジェクトで使用できる形式を
   配列に取得する
※2 ClipboardFormatsプロパティの定数にはこの他に xlClipboardFormatBitmap : ビットマップ、
   xlClipboardFormatRTF : 書式付きテキストなど33ある。くわしくは こちら

Excel VBA Macro