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本目では”プロパティ”についてイメージ持ってもらいますぜ!
最後までご視聴、ありがとうございました~。
コメント