Excel VBAの PasteSpecial メソッドは、コピーしたデータを特定の形式や方法で貼り付けるためのメソッドです。このメソッドを使用している際にエラーが発生することがあります。
他者が作成したコードの改修業務によりエラーで苦戦した為、困っているエンジニアがいるのではと思い作成した記事になります。
著者のケースはシート保護によってエラーが起きていました。
PasteSpecial メソッドのエラー原因とは
・クリップボードにデータが存在しない
PasteSpecial メソッドを呼び出す前に、データをコピーする操作が行われていない場合は、エラーが発生します。
・適切な範囲が選択されていない
貼り付ける範囲とコピーしたデータの範囲が一致していない場合は、エラーが発生する可能性があります。
・貼り付ける内容の形式のミスマッチ
たとえば、数値のみを貼り付けるように指定しているのに、クリップボードに数値以外のデータが含まれている場合はエラーが発生します。
・シートまたはブックが保護されている
保護されているシートやブックにデータを貼り付けようとすると、エラーが発生する可能性があります。
・クリップボードの内容が大きすぎる
クリップボードの内容がExcelの許容範囲を超えている場合、エラーが発生します。
・他のアプリケーションとの競合
他のアプリケーションがクリップボードを使用しているとき、エラーが発生することがあります。
【VBA】Excel VBAのPasteSpecialメソッドの活用方法
原因の解決方法
・クリップボードにデータがあるか確認する
コードの中でコピー操作が正しく行われている事を確認する。
・適切な範囲を選択しているか確認する
Select メソッドを使用して、正しい範囲が選択されている事を確認する。
・貼り付ける内容の形式を変更する
PasteSpecial の引数を見直し、適切な形式で貼り付けるように指定する。
・シートやブックの保護を解除する
保護されている場合は、一時的に保護を解除操作を行い、その後再度保護をかけることができます。
・クリップボードの内容を簡素化する
必要な部分のみをコピーし、一度に貼り付けるデータ量を減らす。
・他のアプリケーションの使用を一時停止する
他のアプリケーションとの競合が疑われる場合、それらのアプリケーションを一時的に閉じてみる。