セルに入力されている内容をコピペしたいだけなのに、このようなエラーが表示されて困ってしまうことがあります。
実行時エラー’438′:オブジェクトは、このプロパティまたはメソッドをサポートしていません。
この記事では、このエラーが発生した場合の対処法について確認します。
とにかくコピペができれば良いという方は対処法の項目へ進んでください。
原因:RangeオブジェクトはPasteメソッドを持たない(セル指定でのコピペはPasteを使えない)
1 2 3 4 |
Sub Test() Range("A1:C9").Copy Range("I1:K9").Paste End Sub |
A1からC9までのセルの値をI1からK9までコピペしようとしています。
実行するとこのようにエラーが発生します。
RangeやCellsでセルを指定した場合、Rangeオブジェクトが取得されます。
オブジェクトを操作するにはメソッドを使いますが、コピペを行うためのCopy,Pasteはメソッドに含まれます。
そして、RangeオブジェクトはCopyメソッドを持ちますが、Pasteメソッドを持ちません。
言い換えると、RangeやCellsでセルやその値を指定したときはCopyは使えますが、Pasteは使えません。そのためにエラーが発生します。
このエラーが発生しやすい例を挙げます。
これらは全てRangeオブジェクトのプロパティに含まれます。
どれもマクロを組む際にはよく使われるものです。
Range、Cells、Currentregion
EntireColumn、Columns
EntireRows、Rows
Resize、End、Value
対処法:Pasteの代わりにPasteSpecialを使う
RangeやCellsでセルやその値を指定した場合はPasteを使うことができないので、代わりにPasteSpecialを使いましょう。
1 2 3 4 |
Sub Test() Range("A1:C9").Copy Range("I1:K9").PasteSpecial End Sub |
実行結果はこのようになります。
まとめ
このエラーに直面するとオブジェクト、プロパティ、メソッドの話が出てきます。
この辺のことをよく理解していないままにマクロを組もうとしていた私は、ここでオブジェクトなどについて知る必要があると感じました。
この記事を読んでいただいているあなたにとっても、今回のエラーをきっかけにオブジェクトやプロパティ、メソッドについて学習する良いタイミングではないかと思います。
学習にはこちらの書籍を活用しています。
2冊目はKindle Unlimitedの対象です。
月1,000円で対象の本ならいくらでも読むことができます。
基礎知識を蓄えるには1冊目を、実際にマクロを組んでいく際には2冊目を使って行いたい処理から逆引きすると便利です。
Kindle Unlimitedはスマホにアプリをダウンロードすることで使うことができるので、ぜひ活用してみましょう。
コメント