パソコンスキルの基本、コピー&ペースト。
これは、エクセルマクロでも、”基本的”と言うと語弊がありますが、簡単な部類に入ります。
記述的にも、特に変化球はなく、
1.範囲を指定して、コピー
2.範囲を指定して、ペースト
という記述になります。
Range(“B2”).pastespecial
そんなの知ってるよ!という感じかと思います。
が、ちょっとした応用編として3つの書き方をご紹介します。
1_コピペを1行でスマートに書く
これはコピーの書き方の基礎でもあるのですが、意外と知らない方もいらっしゃるのでご紹介です。
セルA1をコピー、セルB2へペースト
範囲指定して、コピー(スペースを空けて)貼付け先のセル範囲
これだけでコピペができます。
覚えておきましょう。
注意点としては、形式を選択して貼り付けることができない点となります。
2_形式を選択して貼り付け
「形式を選択して貼付け」は、もちろんですが、手動でやることと同じことができます。
「形式を選択して貼付け」は、先ほどのPastespecialのあとに形式を入力するだけです。
範囲指定して、コピー
Range(“B2”).PasteSpecial xlPasteValues
範囲指定して、ペースト 形式を指定
セルA1をコピー、セルB2へ値のみペーストする場合の書き方となります。
形式部分へ入るコードは下記となりますので参考にしてみてください。
貼付け形式 | 定数 |
すべて | xlPasteAll(既定) |
数式 | xlPasteFormulas |
値 | xlPasteValues |
書式 | xlPasteFormats |
コメント | xlPasteComments |
入力規則 | xlPasteValidation |
罫線を除く全て | xlPasteAllExceptBorders |
列幅 | xlPasteColumnWidths |
数式と数値の書式 | xlPasteFormulasAndNumberFormats |
値と数値の書式 | xlPasteValuesAndNumberFormats |
3_コピーしたデータを一番下の行に貼り付ける
ルーチンでデータを扱う場合、コピーしたデータを一番下の行に貼り付けるという作業は結構多いのではないでしょうか。
「元データをコピーしてデータベースとしているシートの一番下の行へ貼付け」
(ここではコピーはできたものとして貼付け作業について記載します)
この動作をするには範囲指定ページでも説明したendプロパティを使用します。
endプロパティはショートカットキーでいうところの「Ctrl + 矢印」です。
手動で一番下の行にいくにはデータが必ず入力されている列の100万行を起点に「Ctrl + ↑」を押すといけますね。
それをマクロで書くだけです。
これをコードで表すと下記となります。(A列が必ずデータがある行とする)
A列のエクセルの行数から、Ctrl + ↑ を押していったセルの行(行を返したいのでrowを忘れず!)
このコードだけでは、「一番下の行がどうしたの?」というエラーが出てしまうので、
その行数を変数(ここではmaxRowとします)に入れましょう。
これで最終行が取得できました。
あとはペーストするだけ。
注意点としては、上記で取得した最終行の情報はデータが入力されている行数なので、その一つ下のセルに貼り付けなければなりません。忘れがちなのでご注意下さい。
記述としては下記となります。
A列の最終行の1つ下に値のみで貼付け。
全体の流れとしては
・ 範囲指定、コピー。
・ 一番下の行を取得。
・ 一番下の行の一つ下の行を起点にデータを貼付け。
となります。
プチ情報
PasteとPastespecialの違い
Pasteはワークシートが対象
例 activesheet.paste
PasteSpecialはセル範囲(Range,Cells)が対象
例 Range(“A1”).pastespecial xlpasteAll
エラーで悩んでいる方も多いようなので記載しておきます。