Excelマクロ覚書 ~コピペ編~
図書館で借りてきた某書籍の覚書です。
【セルのデータをコピーする】
セルをコピーするにはCopyメソッドを使う。
Rangeオブジェクト.Copy
Range("B4").Copy 'B4セルをコピーする'
コピーしたセルを貼り付けするにはPasteメソッドを使う。
Worksheetオブジェクト.Paste
Range("A4:F10").Copy 'コピーしたセルの'
Range("H4").select '貼り付け先を選んで'
ActiveSheet.Paste 'ペースト実行'
別のワークシートに貼り付ける場合は、RangeオブジェクトのDestinationを指定する
Copyとの間は半角スペースで区切る。省略もできるが、なるべく指定したほうがいい?
左側にコピー元のシート、右側にコピー先のシートを指定する
Worksheetオブジェクト.Rangeオブジェクト.Copy Destination:= Worksheetsオブジェクト.Rangeオブジェクト
Worksheets("Sheet1").Range("A1:F12").Copy _ Destination:=Worksheets("Sheet2").Range("A1")
【セルのデータを移動する】
切り取ってからペーストするので、CutメソッドとPasteメソッドを使う。
Rangeオブジェクト.Cut
Range("A1:F12").Range("A1:F12").Copy '切り取ったセルの'
Range("H1").Select '貼り付け先を選んで'
ActiveSheet.Paste 'ペースト実行'
別のワークシートに貼り付ける場合も、Copyメソッドと同様
Worksheetオブジェクト.Rangeオブジェクト.Cut Destination:= Worksheetsオブジェクト.Rangeオブジェクト
Worksheets("Sheet1").Range("A1:F12").Cut _ Destination:=Worksheets("Sheet2").Range("A1")
【セルを削除する】
セルの値を削除するにはDeleteメソッドを使う。
引数にShiftを指定することで、指定した方向に移動できる
Shiftに指定できる設定値は、xlShiftToLeft(左方向)とxlShiftUp(上方向)のみ
Rangeオブジェクト.Delete Shift:= 隣接セルの移動方向
Range("F12").Delete Shift:=xlShiftToLeft 'F12セルを削除後、F13のセルをF12にずらす'
Range("B1:F12").Delete Shift:=xlShiftToLeft 'B1~F12セルを削除後、B13~F25のセルをB1~F12にずらす'
【セルを挿入する】
セルの値を挿入するにはInsertメソッドを使う。 引数にShiftを指定することで、指定した方向に移動できる Shiftに指定できる設定値は、xlShiftToRight(右方向)とxlShiftDown(下方向)のみ 移動後の書式はセル上側の書式が適用される。
Rangeオブジェクト.Insert Shift:= 隣接セルの移動方向
Range("F12").Insert Shift:=xlShiftToLeft 'F12セルに挿入後、既存のF12セルを右にずらす'
Range("F12").Value = "私は猫になりたいんだ!" 'F12セルに値を入力'
セル移動後の書式を変更するにはCopyOriginを使う。
※CopyOriginに指定できる設定値
- xlFormatFromLeftOrAbove(上、左側セルの書式)
- xlFormatFromRightOrBelow(右・下側セルの書式)
Rangeオブジェクト.Insert Shift:= 隣接セルの移動方向, CopyOrigin:= セル移動後の書式を適用する方向
Range("F1:H4").Insert Shift:=xlShiftDown, CopyOrigin:= x1FormatFromRightOrBelow 'F1~H4セルに値を挿入後、右・下側セルの書式を適用'
【セルの形式を指定してコピペする】
セルの形式を指定して貼り付けるにはPasteSpecialメソッドを使う。
引数にPasteを指定することで、貼り付け先セルの形式を指定できる。
Rangeオブジェクト.PasteSpecial Paste:= PasteSpecial 貼り付け先セルの形式
※Pasteに指定できる設定値
xlPasteFormats | :書式のみ |
xlPasteFormulas | :数式のみ |
xlPasteFormulasAndNumberFormats | :値のみ |
xlPasteValuesAndNumberFormats | :値と数値の書式 |
Range("A1:H10").Copy 'F1~H10セルをコピー'
Range("F12").PasteSpecial Paste:=xlPasteFormats 'F12セルを起点に、書式のみ貼り付け'
【値を算出して貼り付ける】
セルの値を算出して張り付けるにはPasteSpecialメソッドの引数Operaionを設定する。
Rangeオブジェクト.PasteSpecial Operaion:= 算出方法
※Operationに指定できる設定値
xlPasteSpecialOperationAdd | :加算 |
xlPasteSpecialOperationSubtract | :減算 |
xlPasteSpecialOperationDivide | :除算 |
xlPasteSpecialOperationMultiply | :除算 |
Range("A1").Value = 1.08 'A1セルに消費税を設定'
Range("A1").Copy 'A1セルをコピー'
Range("B1").PasteSpecial Paste:=xlPasteValues _
, Operation:= xlPasteSpecialOperationMultiply 'A2セルに消費税分を加える'