- ベストアンサー
ExcelVBAで異なるシート間での値貼り付け
- Excel VBAを使用して異なるシート間で値をコピーして貼り付ける方法について質問します。
- 質問者はExcel2007を使用して、Sheet1のセルの値をSheet2に貼り付けようとしていますが、うまくいきません。
- 質問者はコード(1)を書いたが、コンパイルエラーが発生しました。質問として、等号(=)を使用して異なるシート間で値を貼り付けることはできないのか、またコードを改良する方法についてアドバイスを求めています。
- みんなの回答 (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の方が判り易い
その他の回答 (1)
- hallo-2007
- ベストアンサー率41% (888/2115)
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 の方がわかりかも。
お礼
返信が遅くなり申し訳ありませんでした。 また、ご回答頂きありがとうございました。 省略せずにWorksheetの記述から始めればよかったのですね。 アドバイスありがとうございました!
お礼
返信が遅くなり大変申し訳ありませんでした。 また、ご回答ありがとうございました。 質問に記すのを失念しておりましたが、標準モジュールにてマクロを作成しておりました。 どのシートをアクティブにしているか注意しながらコードを作りたいと思います。 本当にありがとうございました!