| |
Excel VBA Macro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Excel DownLoad |
|
|
|
|
|
| |
|
|
|
Sample Macro コピー [基本型] |
 |
|
|
'=========================================================================================
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文法) |
 |
 |
 |
'=========================================================================================
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には貼り付けるセルの左上を記入
'=========================================================================================
Sub アクティブシートの中でデータを移動する()
Worksheets("SSS").Activate 'シートをアクティブにする ※1
ActiveSheet.Range("A1:A3").Cut _
Destination:=ActiveSheet.Range("C1") 'A1:A3セルの内容をC1セルを先頭にして移動 ※2
End Sub
'-----------------------------------------------------------------------------------------
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シートの
A1:A3セルの内容をアクティブシートのC1セルを先頭にして移動する ※1、2
End Sub
'=========================================================================================
<コメント>
※1 SSS、SS2にはシート名を記入
※2 A1:A3、C1:C3には移動元範囲を、A1、C1、には移動先範囲を記入する
'=========================================================================================
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文法) |
 |
 |
 |
'=========================================================================================
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つ選んで使用
'=========================================================================================
Sub 数式セルで演算結果の値だけを残して数式を削除する()
セル範囲 = "C1:C1" '※1
Range(セル範囲).Value = Range(セル範囲).Value '※2
End Sub
'=========================================================================================
<コメント>
※1 例えば A1セルに1、B1に2、C1に数式 =A1+B1 が入力されているとすると
※2 C1セルには値の 3 が残る(数式は削除される)
'=========================================================================================
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には貼り付け先セル範囲の左上端セルを記入
'=========================================================================================
Sub 空白セルを無視して値を貼り付ける()
Range("A4").PasteSpecial Paste:=xlValues, SkipBlanks:=True '※1
End Sub
'=========================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_mushi.xls 36KB) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|
'=========================================================================================
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) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|
'=========================================================================================
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セルの値により、月間シートの対応する日付の行に貼り付ける
入力シート→
月間シート→
'=========================================================================================
Sub リンク貼り付けする()
Range("A4").Select '※1
ActiveSheet.Paste Link:=True
End Sub
'=========================================================================================
<コメント>
※1 A4には貼り付けるセルの左上を記入
サンプルブックのダウンロードは ここをクリック (YNxv209_copy_link.xls 35KB) ※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。
|
'=========================================================================================
Sub コピーモードを解除する()
Sheets("SSS").Select '※1
Application.CutCopyMode = False
End Sub
'=========================================================================================
<コメント>
※1 SSSにはシート名を記入
'=========================================================================================
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode <> False Then
Application.CutCopyMode = False
End If
End Sub
'=========================================================================================
<コメント>
※1 このマクロは禁止したいシートのコード画面で作成する
'=========================================================================================
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ある。くわしくは こちら
|