- ベストアンサー
エクセルVBA 別シート間の列のコピー&ペースト
- エクセルVBAを使用して、別のシート間で列のコピー&ペーストを行いたいですがうまくいきません。
- 変数iとjには期待通りの値が代入されていますが、Worksheets関数を使用してもコピー&ペーストができません。
- 貼り付け先(Destination)の記述が間違っているのかどうかわかりません。お助けください!
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
横から失礼致します。 回答No.2の最後と回答No3のお礼の組み合わせでいかがでしょうか。 Worksheets("Sheet1").Activate Worksheets("Sheet1").Range(Columns(i), Columns(j)).Copy Worksheets("Sheet2").Range("C1") です。 Excel2003と2007で検証しました。
その他の回答 (5)
- TAKA_R
- ベストアンサー率32% (26/79)
no.4さんのでシート1がactivateされていなくても、コピーできると思います。 シート1のコマンドボタンだから・・・と言っても、 よそのシートを開いたり よそのシートに書き込んだり、 ほかのブックを開いてみたり、 何かするとよそのシートがactivateされてしまいます。
お礼
お礼が遅れて申し訳ございません。 おっしゃる通りでした!Activateをしなくても上手くいきましたし、もちろんActivateしても同じ結果です。 どうもありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
Range(Worksheets("Sheet1").Columns(i), Worksheets("Sheet1").Columns(j)).Copy Destination:= _ Worksheets("Sheet2").Columns("C") ではどうでしょうか。
お礼
お礼が遅くなって申し訳ございません。 わたくしが、シート1にコマンドボタンがある、と書きましたが、コマンドボタンはシート2でした。 シート1にコマンドボタンを移したところ、上手くいきました! どうもありがとうございました!
- TAKA_R
- ベストアンサー率32% (26/79)
たびたび、すいません。 ひょっとしてコピー貼り付け先のシートがactivateされていませんか? コピー元のシートがactivate状態で実行したら、同じようなエラーが出てたので・・・。
お礼
回答ありがとうございます! Copyの直前に ActiveSheet.Name にて、アクティブシート名を取得してみたところ、 Sheet2と出ました。ちなみにこのコードは、シート1のコマンドボタンにて動くようになっています。 Copyの前にWorksheets("Sheet1").Activate としても、同様のエラーです。。。
- TAKA_R
- ベストアンサー率32% (26/79)
いけないのかどうかは分かりませんが、 range(columns("c"))を range(columns("c:c")) または range(columns(3)) はたまた range("c1") にするとうまくいくかと思います。
お礼
やはり、私の書いたコードと同じエラーが出てしまいました。 候補をたくさん教えていただき、ありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
Worksheets("Sheet1").Range(Columns(i), Columns(j)).Copy Destination:= _ Worksheets("Sheet2").Columns("C") としてみてはどうでしょうか。
お礼
私の書いたコードと同じく、 アプリケーション定義またはオブジェクト定義のエラーです。 と出てしまいました。 早速のご回答、ご回答ありがとうございます。
お礼
お礼が遅れて申し訳ございません! 検証までしていただき、身に余る光栄でございます。 教えていただいた方法でも上手くいきました。ありがとうございます。 しかし、どのやり方でもSheet2にコードを書くとうまくいきませんでした。 まあ、これはそんなに大きな問題ではありませんので、良しとします。 どうもありがとうございました!