PCメモ

Excelを中心とした業務改善の記録

VBA100本ノック 2本目:セルのコピー (書式指定)

出題内容

「Sheet1」のA1:C5のセル範囲を、「Sheet2」のA1:C5にコピーしてください。
数式は消して値でコピー、書式もコピーしてください。
※書式は「セルの書式設定」で設定可能なもの(ロックは除く)。
入力規則やメモ(旧コメント)は書式ではありません。
「ふりがな」は任意で

 

f:id:abv72:20210405204231p:plain

excel-ubara.com

 

回答

自分の回答

Sub vba002()

 Sheets("Sheet1").Range("A1:C5").Copy
 Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
 Application.CutCopyMode = False

End Sub

 xlPasteValuesAndNumberFormats とすると数値の値と数値の書式が貼りつく。
セルの書式は貼りついていない。(塗りつぶし、罫線)

f:id:abv72:20210405204658p:plain

 

模範解答

一度書式を貼り付けた後に、値のみを貼り付ける。

 Worksheets(""Sheet1"").Range(""A1:C5"").Copy 
 Worksheets(""Sheet2"").Range(""A1"").PasteSpecial Paste:=xlPasteFormats '書式
 Worksheets(""Sheet2"").Range(""A1"").PasteSpecial Paste:=xlPasteValues '値
 Application.CutCopyMode = False

 

値を代入するという書き方でもよい。

 Worksheets(""Sheet2"").Range(""A1:C5"").Value = Worksheets(""Sheet1"").Range(""A1:C5"").Value