2本目 値と書式のコピー

VBA100本ノック

VBA100本ノック 2本目の投稿です。Excelの神髄さんの模範解答はコチラ


問題

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

解答

Sub ノック2本目()

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

※ノック1本目のコード Sheets(“Sheet1”).Range(“A1:C5”).Copy では”入力規則”などもコピーされてしまう。そこで
1.コピー
2.貼り付け(書式)
3.貼り付け(値)
4.コピーモード解除
これら一連の順次処理が初心者にもイメージしやすかったと思います。


新人君
新人君

PasteSpecialメソッドを使えば、色々な形式で
貼り付けができるんっスね!

ブチョ
ブチョ

そうなの?

新人君
新人君

・・・・・

Range.PasteSpecialメソッド

指定した範囲にコピーされたRangeオブジェクトを貼り付けるメソッド。

Microsoft公式サイトではパラメータの指定方法の詳細な記載がない?ので
Excelの神髄さんのサイトで確認するのがおススメ。

■パラメータ[全て任意]
Range.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
Paste…貼り付け方法(書式のみ、値のみ、全て等)
Operation…計算(足し算、引き算など)
SkipBlanks…空白のセルを貼り付けたくない場合のみTrue。(規定はFalse)
Transepose…行列入れ替えたい場合のみTrue。(規定はFalse)

ブチョ
ブチョ

形式を選択して貼り付ける以外にも、計算したり、
行列を入れ替えたりもできるのね!

新人君
新人君

そうっスね!!

ブチョ
ブチョ

で?そんなことやりたい時って実際あるの?

新人君
新人君

・・・、どうなんスかね…

あとがたり

おはこんばんちわ~。uぷ主です。

今回は”値”貼り付けについて、PasteSpecialメソッドさんを使いました。
.Value = .Valueでも良かったかもしれないですが…

ただ、まずは”メソッド”についてある程度イメージを持ってもらいたかったので、
この解答にしました!

uぷ主の特徴として、「地頭が良くない」「後回しにしがち」「めんどくさがり」があるのですが、
“メソッド”ってなに?”プロパティ”ってなに?を長年放っておいた…その結果!

「VBA習得が大幅に遅れた」ので…(汗)

3本目では”プロパティ”についてイメージ持ってもらいますぜ!

最後までご視聴、ありがとうございました~。

コメント

タイトルとURLをコピーしました