- ベストアンサー
エクセルVBAでエラーが出る原因とは?
- エクセルVBAでデータの転記をする際、設定情報もコピーする方法について確認します。
- 修正したVBAコードにおいて、エラーが発生してしまいます。その原因について考えてみましょう。
- 設定情報をコピーするためのVBAコードを修正した際、エラーが発生する原因とは何でしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 PasteSpecialはRangeに対して「形式を指定して貼り付け」を行うメソッドです。 なので、 (1)コピー元のRangeを「Copy」 (2)コピー先のRangeに「PasteSpecial」 と、2つの命令が最低でも必要になります。 ご提示のコードは、コピーする命令がなく、コピー元にもコピー先にも「PasteSpecial」を行っていて、なおかつ1行の命令に無理やりまとめてる的な...申し訳ないですが、文法がメチャメチャです(気を悪くしたらごめんなさい) 値だけでなく、書式等を全てコピー&貼り付けということでしたら Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3:J7").Copy _ Destination:=Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7") で良いかと思います。「PasteSpecial」にこだわる必要は、あまりないかなと。 外してたら、ごめんなさい。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
>しかし、エラーがでてしまいます。なぜなのでしょうか? ⇒ご質問者は、「PasteSpecial」をwebで一度でも検索したのだろうか? 文法エラー(赤印字)なのだからでPasteSpecialメソッドのリファレンスをみれば一目瞭然ですのでお試し下さい。
お礼
ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
代入とコピーの違いが判ってないようだ。 代入はセルの値(Value) だけを写すことを問題にする。 これはコンピュターソフト発祥以来の原初的な処理で、ビジネスではほとんどこれで済む。昔はこれしかなかった。 だんだん発達して、セルRangeの属性が多様化している。 後者は、マクロの記録でどういうコードになるか判るのでは。 (1)基本は Sub Macro5() Range("A1:A3").Select Selection.Copy Sheets("Sheet2").Select Range("B2").Select ActiveSheet.Paste End Sub (2)外にDestinationを使う方法 これは書き方や見るものには簡潔で判りやすい。 (3)PasteSpecialを使う方法 Paste:=xlPasteAll以外では(3)を使はないとならない場合があるので使い分ける必要がある場合はある。 ーー エラーが出る原因は、=を使って代入でやるので無く、(2)、(3)では引数として情報を書くのだ。
お礼
ありがとうございました。
- xls88
- ベストアンサー率56% (669/1189)
PasteSpecialメソッドで代入はできません。 元をCopyして、貼り付け先でPasteSpecialです。 今回の例では普通にCopyして貼り付けで良いと思います。 Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7").Copy _ Destination:=Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3")
お礼
ありがとうございました。
お礼
ありがとうございました。