• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでエラーが出る原因を教えて下さい)

エクセルVBAでエラーが出る原因とは?

このQ&Aのポイント
  • エクセルVBAでデータの転記をする際、設定情報もコピーする方法について確認します。
  • 修正したVBAコードにおいて、エラーが発生してしまいます。その原因について考えてみましょう。
  • 設定情報をコピーするためのVBAコードを修正した際、エラーが発生する原因とは何でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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」にこだわる必要は、あまりないかなと。 外してたら、ごめんなさい。

tekkenman7
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

>しかし、エラーがでてしまいます。なぜなのでしょうか?  ⇒ご質問者は、「PasteSpecial」をwebで一度でも検索したのだろうか?   文法エラー(赤印字)なのだからでPasteSpecialメソッドのリファレンスをみれば一目瞭然ですのでお試し下さい。

tekkenman7
質問者

お礼

ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

代入とコピーの違いが判ってないようだ。 代入はセルの値(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)では引数として情報を書くのだ。

tekkenman7
質問者

お礼

ありがとうございました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

PasteSpecialメソッドで代入はできません。 元をCopyして、貼り付け先でPasteSpecialです。 今回の例では普通にCopyして貼り付けで良いと思います。 Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7").Copy _ Destination:=Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3")

tekkenman7
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう