• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBAにて異なるシート間での値貼り付け)

ExcelVBAで異なるシート間での値貼り付け

このQ&Aのポイント
  • Excel VBAを使用して異なるシート間で値をコピーして貼り付ける方法について質問します。
  • 質問者はExcel2007を使用して、Sheet1のセルの値をSheet2に貼り付けようとしていますが、うまくいきません。
  • 質問者はコード(1)を書いたが、コンパイルエラーが発生しました。質問として、等号(=)を使用して異なるシート間で値を貼り付けることはできないのか、またコードを改良する方法についてアドバイスを求めています。

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

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

A1.RangeとCellsのシートオブジェクトが相違しているからで、コピーはシート間でも問題ありません。   マクロが標準モジュールならアクティブシート、シートモジュールならそのシートオブジェクトが省略した場合の基準になります。   仮に標準モジュールでSheet1をアクティブとすると左辺のRangeはSheet2、CellsはSheet1となるので不整合になります。   因みに(2)のコードは偶々、Sheet1をアクティブにしたからエラーにならなかっただけです。   A2.一例です。   Cellsなら、Sheet2.Cells(1,"j").Resize(5).Value = Sheet1.Cells(1,"A").Resize(5).Value   又は、Sheet2.Range("J1:J5").Value = Sheet1.Range("A1:A5").Valueの方が判り易い

fujisan123321
質問者

お礼

返信が遅くなり大変申し訳ありませんでした。 また、ご回答ありがとうございました。 質問に記すのを失念しておりましたが、標準モジュールにてマクロを作成しておりました。 どのシートをアクティブにしているか注意しながらコードを作りたいと思います。 本当にありがとうございました!

その他の回答 (1)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

Q2:コード(1)を改良する場合、どのように書き直せばよいでしょうか。 全てを省略せずに記述すると Worksheets("Sheet2").Range(Worksheets("Sheet2").Cells(1, 10), Worksheets("Sheet2").Cells(5, 10)).Value = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1, 1), Worksheets("Sheet1").Cells(5, 1)).Value  となります。 短く記述できるとすれば Worksheets("Sheet2").Range("J1:J5").Value = Worksheets("Sheet1").Range.("A1:A5").Value の方がわかりかも。

fujisan123321
質問者

お礼

返信が遅くなり申し訳ありませんでした。 また、ご回答頂きありがとうございました。 省略せずにWorksheetの記述から始めればよかったのですね。 アドバイスありがとうございました!