| |
|
|
Sample Macro コピー [基本型] |
 |
|
|
|
1) すべてコピー、切り取りする |
 |
 |
'=========================================================================================
Sub コピーして貼り付ける() 'Pasteメソッド
Worksheets("SSS").Activate 'ワークシートをアクティブにする ※1
Range("A1:C3").Copy 'コピーする ※2
Range("A4").Select '貼り付け先のセル範囲を選択する ※3
ActiveSheet.Paste '現在の選択範囲に貼り付ける
End Sub
'-----------------------------------------------------------------------------------------
Sub コピーして別のシートに貼り付ける() 'Pasteメソッド
Worksheets("SSS").Activate 'ワークシートをアクティブにする ※1
Range("A1:C3").Copy 'コピーする ※2
ActiveSheet.Paste Destination:=Worksheets("SS2").Range("A4") '貼り付ける ※3、4
End Sub
'-----------------------------------------------------------------------------------------
Sub 使われたセル範囲をコピーして別のシートに貼り付ける() 'Pasteメソッド
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文法) |
 |
 |
'=========================================================================================
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) 形式を選んで貼り付ける |
 |
 |
'=========================================================================================
Sub 形式を選んで貼り付ける_97later() 'PasteSpecialメソッド
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)
|
2-2) 形式を選んで貼り付ける (Excel95文法) |
 |
 |
'=========================================================================================
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つ選んで使用
|
2-3) 値だけを残して数式を削除する |
 |
 |
'=========================================================================================
Sub 数式セルで演算結果の値だけを残して数式を削除する()
セル範囲 = "C1:C1" '※1
Range(セル範囲).Value = Range(セル範囲).Value '※2
End Sub
'=========================================================================================
<コメント>
※1 例えば A1セルに1、B1に2、C1に数式 =A1+B1 が入力されているとすると
※2 C1セルには値の 3 が残る(数式は削除される)
|
3) 指定したセル範囲の値を等しくする |
 |
 |
'=========================================================================================
Sub 指定したセル範囲の値を等しくする_同一シート()
Dim cpy As Range 'コピー範囲セット用
Dim pst As Range '貼り付け範囲 〃
'
Worksheets("SSS").Activate '※2 シートをアクティブにする
左 = 1 '※3 左上セルの列
上 = 1 '※3 〃 行
右 = 3 '※3 右下セルの列
下 = 1 '※3 〃 行
Set cpy = Range(Cells(上, 左), Cells(下, 右)) 'コピー範囲をセット
Set pst = Range(Cells(上, 左 + 3), Cells(下, 右 + 3)) '※4 貼り付け範囲セット
pst.Clear '※5 クリアしておく
pst.Value = cpy.Value '貼り付け範囲の値をコピー範囲の値と等しくする
End Sub
'-----------------------------------------------------------------------------------------
Sub 指定したセル範囲の値を等しくする_異なるシート()
Dim cpy As Range 'コピー範囲セット用
Dim pst As Range '貼り付け範囲 〃
'
Worksheets("SSS").Activate '※6 シートをアクティブにする
左 = 1 '※3 左上セルの列
上 = 1 '※3 〃 行
右 = 3 '※3 右下セルの列
下 = 1 '※3 〃 行
Set cpy = Worksheets("SSS").Range(Cells(上, 左), Cells(下, 右))
'※6 コピー範囲をセット
Worksheets("SS2").Activate '※7 シートをアクティブにする
Set pst = Worksheets("SS2").Range(Cells(上, 左 + 3), Cells(下, 右 + 3))
'※4、7 貼り付け範囲セット
pst.ClearContents '※5 値をクリアしておく
pst.Value = cpy.Value '貼り付け範囲の値をコピー範囲の値と等しくする
End Sub
'=========================================================================================
<コメント>
※2 SSSにはシート名を記入
※3 1、1、3、1にはセルの行、列番号を記入
※4 +3は列番号の修正で必要なら記入
※5 このコードは動作確認用につき不可欠ではない
※6 SSSにはコピーするシート名を記入
※7 SS2には貼り付けするシート名を記入
|
4) 空白セルを無視して値を貼り付ける |
 |
 |
'=========================================================================================
Sub 空白セルを無視して値を貼り付ける()
Range("A4").PasteSpecial Paste:=xlValues, SkipBlanks:=True '※1
End Sub
'=========================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_mushi.xls 36KB) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|
|
5-1) 行列を入れ替えて値と書式を貼り付け |
 |
 |
'=========================================================================================
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) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|
|
5-2) 指定した行へ貼り付ける |
 |
 |
'=========================================================================================
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セルの値により、月間シートの対応する日付の行に貼り付ける
入力シート→
月間シート→
|
6) リンク貼り付けする |
 |
 |
'=========================================================================================
Sub リンク貼り付けする()
Range("A4").Select '※1
ActiveSheet.Paste Link:=True
End Sub
'=========================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_link.xls 35KB) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|
|
7) コピーモードを解除する |
 |
 |
'-----------------------------------------------------------------------------------------
Sub コピーモードを解除する()
Sheets("SSS").Select '※1
Application.CutCopyMode = False
End Sub
'-----------------------------------------------------------------------------------------
<コメント>
※1 SSSにはシート名を記入
|
8) クリップボードの内容を確認する |
 |
 |
'=========================================================================================
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ある。くわしくは こちら
|