エクセルマクロを0から独学で極める極意~ITを味方に~

エクセルマクロを0から独学で極める極意~ITを味方に~

一緒に独学でマクロを極めて、定時帰宅とスキルアップを目指しましょう!

2本目「セルのコピー(書式貼り付け・値貼付)」を学ぶ

では、前回に引き続きノック2本目を学んでいきます

 

お題 2本目

f:id:Rimux:20210713200927p:plain

 

回答 

前回のマクロでは、セルの入力規則やコメントも含めてシート2へ、そっくりそのままコピーされました。 Range().Copy (Destination:=)・・・ (()は省略可)

beginners.hatenablog.jp

今回は「書式と数値のみ」を、シート3に貼り付けてみます!

準備

準備として、シート1のA1セルにコメントを追加、

f:id:Rimux:20210713203003p:plain

 

 今回の課題で、試しにこのコメントを残さずに貼り付けられるか、実践してみます。

 

実際に書いてみると・・

f:id:Rimux:20210713214245p:plain

お題2の3行目に、PasteSpecial という新しい貼り付け方がでてきました。これを使うと、より柔軟に数値だけ貼り付けたり、数式だけは貼り付けたりと応用が効きます。

シンプルに丸々ぺたっとメモまで貼り付けていいときはお題1の書き方を用い、細かく指定したい時はこちら、といった使い分けで良さそうな感じです。

 

その後で引数として Paste:=xlPasteFormatsを指定しています。これは表示形式を貼り付けるという意味です。また、次のApplication.CutCopyMode とは、「コピーしたときのドット線で選択されている状態になっているモード」のことです。これを解除する、つまり、真偽でいう偽にしたいので、falseとします。

まずはここまででシート3を追加したのちに実行してみると・・

おお!文字が・・ない!(そりゃそうだ)。表示形式に文字情報はありません。

別で足してあげましょう。

f:id:Rimux:20210713214944p:plain

(課題からは少しずれますが、)試しにこの状態に数式で追加してみます。

数式は英語でFormulasなので、引数にはxlPasteFormulas(=エクセルに数式を貼る)を用います。これを実行してみると

f:id:Rimux:20210713215607p:plain

ちゃんとA1からコメントメモがないものが、シート3に

f:id:Rimux:20210713215840p:plain

きちんと実行されました!

では、これを数値として貼り付けるお題に修正します。

シート1のB列には数式「=today()」が入っています。貼り付け先の表示形式「日付」は既に貼り付けられました。ここにtoday()という数式ではなく、数値つまり「2021/7/13」という記号として貼り付けます。

数式を追加した行の先頭で 「’」(Shift+7)を入力してください。コメントアウトしておきます(いまは使わないけど、あとでまたコピペして使い回したい、という時とかなかなか便利です)。で実行すると

f:id:Rimux:20210713222252p:plain

ちゃんとB列に日付の値として貼り付けられました!これにてお題終了!

f:id:Rimux:20210713222754p:plain


今回学んだこと総括

ただまるっと貼りたいなら、

Range().Copy (Destination:=)・・・ (()は省略可)

細かく指定したいなら ①コピって②ペーストスペシャルして③引数指定④範囲解除 で一連の流れ

Range().Copy

Range().PasteSpecial Paste:=xlPasteあれこれ

Application.CutCopyMode=False

 

ペーストスペシャルでよく使いそうな引数

表示形式

Paste:=xlPasteFormats

数式

Paste:=xlPasteFormulas

数値

Paste:=xlPasteValues 

(※末尾のsに注意)