エクセルマクロのコピペ

パソコンスキルの基本、コピー&ペースト。

これは、エクセルマクロでも、”基本的”と言うと語弊がありますが、簡単な部類に入ります。

記述的にも、特に変化球はなく、

1.範囲を指定して、コピー
2.範囲を指定して、ペースト

という記述になります。

例:コピー&ペースト
Range(“A1”).copy
Range(“B2”).pastespecial

そんなの知ってるよ!という感じかと思います。
 
 
が、ちょっとした応用編として3つの書き方をご紹介します。

  • コピペを1行でスマートに書く
  • 形式を選択して貼り付け
  • コピーしたデータを一番下の行に貼り付ける
  •  
     

    1_コピペを1行でスマートに書く

    これはコピーの書き方の基礎でもあるのですが、意外と知らない方もいらっしゃるのでご紹介です。

    コピペを1行でスマートに書く
    Range(“A1”).copy Range(“B2”)
    セルA1をコピー、セルB2へペースト

    範囲指定して、コピー(スペースを空けて)貼付け先のセル範囲
    これだけでコピペができます。

    覚えておきましょう。

    注意点としては、形式を選択して貼り付けることができない点となります。

    2_形式を選択して貼り付け

    「形式を選択して貼付け」は、もちろんですが、手動でやることと同じことができます。

    「形式を選択して貼付け」は、先ほどのPastespecialのあとに形式を入力するだけです。

    2_形式を選択して貼り付け
    Range(“A1”).copy
    範囲指定して、コピー
    Range(“B2”).PasteSpecial xlPasteValues
    範囲指定して、ペースト 形式を指定

    セルA1をコピー、セルB2へ値のみペーストする場合の書き方となります。

    形式部分へ入るコードは下記となりますので参考にしてみてください。

    貼付け形式 定数
    すべて xlPasteAll(既定)
    数式 xlPasteFormulas
    xlPasteValues
    書式 xlPasteFormats
    コメント xlPasteComments
    入力規則 xlPasteValidation
    罫線を除く全て xlPasteAllExceptBorders
    列幅 xlPasteColumnWidths
    数式と数値の書式 xlPasteFormulasAndNumberFormats
    値と数値の書式 xlPasteValuesAndNumberFormats

    3_コピーしたデータを一番下の行に貼り付ける

     
    ルーチンでデータを扱う場合、コピーしたデータを一番下の行に貼り付けるという作業は結構多いのではないでしょうか。

    スポンサーリンク

    「元データをコピーしてデータベースとしているシートの一番下の行へ貼付け」
    (ここではコピーはできたものとして貼付け作業について記載します)

    この動作をするには範囲指定ページでも説明したendプロパティを使用します。

    endプロパティはショートカットキーでいうところの「Ctrl + 矢印」です。

    手動で一番下の行にいくにはデータが必ず入力されている列の100万行を起点に「Ctrl + ↑」を押すといけますね。
    それをマクロで書くだけです。

    これをコードで表すと下記となります。(A列が必ずデータがある行とする)

    行数取得
    cells(rows.count,1).end(xlup).row
    A列のエクセルの行数から、Ctrl + ↑ を押していったセルの行(行を返したいのでrowを忘れず!)

    このコードだけでは、「一番下の行がどうしたの?」というエラーが出てしまうので、
    その行数を変数(ここではmaxRowとします)に入れましょう。

    最終行を変数にいれる
    maxRow = cells(rows.count,1).end(xlup).row

    これで最終行が取得できました。

    あとはペーストするだけ。
    注意点としては、上記で取得した最終行の情報はデータが入力されている行数なので、その一つ下のセルに貼り付けなければなりません。忘れがちなのでご注意下さい。

    記述としては下記となります。

    最終行を変数にいれる
    cells(maxRow + 1 ,1).pastespecial xlpastevalues
    A列の最終行の1つ下に値のみで貼付け。

    全体の流れとしては

    ・ 範囲指定、コピー。
    ・ 一番下の行を取得。
    ・ 一番下の行の一つ下の行を起点にデータを貼付け。

    となります。

    プチ情報

    PasteとPastespecialの違い

    Pasteはワークシートが対象
    例 activesheet.paste
    PasteSpecialはセル範囲(Range,Cells)が対象
    例 Range(“A1”).pastespecial xlpasteAll

    エラーで悩んでいる方も多いようなので記載しておきます。

    スポンサーリンク

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    %d人のブロガーが「いいね」をつけました。