VBA練習問題
VBA100本ノック 2本目:セルのコピー

VBAを100本の練習問題で鍛えます
最終更新日:2021-08-18

VBA100本ノック 2本目:セルのコピー


セルのコピーに関する問題です。
セルの値と書式をコピーします。


ツイッター連動企画です。
ツイート文字数制限があるので、ブック指定等省略可能な記述は省略しています。

VBAテスト用のサンプルデータはご自身でご用意ください。


出題

出題ツイートへのリンク

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


VBA作成タイム

この下に頂いた回答へのリンクと解説を掲載しています。
途中まででも良いので、できるだけ自分でVBAを書いてみましょう。


他の人の回答および解説を見て、書いたVBAを見直してみましょう。


頂いた回答

解説

ブックの指定は省略します。

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 

※Valueは省略できません。(正確には右辺のValueが省略できない
「ふりがな」はコピーされない


補足

Range().Copy Destination:=・・・
これでコピーすると入力規則やメモ(旧コメント)もコピーされてしまいます。
これらをコピーせずに書式をコピーする場合は、
.PasteSpecial Paste:=xlPasteFormats
これを使ってください。
PasteSpecialの引数は、「形式を選択して貼り付け」のダイアログを見て確認してください。

.PasteSpecialの引数
名前 指定値 説明
Paste xlPasteAll すべてを貼り付けます。
xlPasteAllExceptBorders 輪郭以外のすべてを貼り付けます。
xlPasteAllMergingConditionalFormats すべてを貼り付け、条件付き書式をマージします。
xlPasteAllUsingSourceTheme ソースのテーマを使用してすべてを貼り付けます。
xlPasteColumnWidths コピーした列の幅を貼り付けます。
xlPasteComments コメントを貼り付けます。
xlPasteFormats 書式を貼り付けます。
xlPasteFormulas 数式を貼り付けます。
xlPasteFormulasAndNumberFormats 数式と数値の書式を貼り付けます。
xlPasteValidation 入力規則を貼り付けます。
xlPasteValues 値を貼り付けます。
xlPasteValuesAndNumberFormats 値と数値の書式を貼り付けます。
Operation xlPasteSpecialOperationAdd コピーしたデータは、対象セルの値に加算されます。
xlPasteSpecialOperationDivide コピーしたデータは、対象セルの値によって割り算されます。
xlPasteSpecialOperationMultiply コピーしたデータには、対象セルの値に掛け算されます。
xlPasteSpecialOperationSubtract コピーしたデータは、対象セルの値に引き算されます。
xlPasteSpecialOperationNone 貼り付け操作で計算は行われません。
SkipBlanks バリアント型 (Variant) クリップボードに含まれる空白のセルを貼り付けの対象にしないようにするには、True を指定します。
既定値は False です。
Transpose バリアント型 (Variant) 貼り付けのときにデータの行と列を入れ替えるには、True を指定します。
既定値は False です。

VBA マクロ 100本ノック


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

これでもセルのほとんどの情報はコピーされますが、
メモ(旧コメント)はコピーされるが入力規則はコピーされない等、コピーされる情報に気を付ける必要もあるので積極的に使うものではないと思います。


サイト内関連ページ

第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)|VBA入門
・セルをコピー(複写)する場合 ・セルを切り取る(移動する)場合 ・セル範囲のコピーについて ・別のシートにコピーする場合 ・アクティブシート以外へのコピー ・セルのコピーについてのサイト内参考ページ
第41回.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
・PasteSpecialメソッド ・値の貼り付け ・いろいろなコピーのVBAの書き方 ・PasteSpecialの使用例 ・最後に
第42回.セルをコピーするとは|VBA入門
・セルをコピーするとは ・上記方法ではコピーできないプロパティ ・.Valueのセル範囲間のコピー ・.Value以外の場合は、セル範囲をセル範囲にコピーは出来ません ・コピー方法の使い分け ・セルのコピー(Copyメソッド)実行時の注意点 ・最後に




同じテーマ「VBA100本ノック」の記事

1本目:セルのコピー
2本目:セルのコピー
3本目:セルの消去
4本目:セルの消去
5本目:セルの計算
6本目:セルに計算式
7本目:日付データの扱い
8本目:点数の合否判定
9本目:フィルターコピー
10本目:行の削除
11本目:セル結合の警告


新着記事NEW ・・・新着記事一覧を見る

抜けている数値を探せ|エクセル雑感(2022-07-01)
.Net FrameworkのSystem.Collectionsを利用|VBA技術解説(2022-06-29)
迷路ネコが影分身の術を体得したら…|エクセル雑感(2022-06-27)
迷路にネコが挑戦したら、どうなるかな…|エクセル雑感(2022-06-26)
サロゲートペアに対応した自作関数(Len,Left,Mid,Right)|エクセル雑感(2022-06-24)
「マクロの登録」で登録できないプロシージャーは?|エクセル雑感(2022-06-23)
オブジェクトのByRef、ByVal、Variant|エクセル雑感(2022-06-22)
コメントから特定形式の年月を取り出す|エクセル雑感(2022-06-19)
4,9を使わない連番作成|エクセル雑感(2022-06-17)
連番を折り返して出力|エクセル雑感(2022-06-16)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.マクロって何?VBAって何?|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ