• ベストアンサー

エクセルマクロでセルのコピー

困ってしまったので質問させてください Sub 一定秒おきに実行() Dim i As Integer  For i = 1 To 10   Application.Wait Now() + TimeValue("00:00:10")  コピーして別のシートに貼り付ける Next End Sub ---------------------------------- Sub コピーして別のシートに貼り付ける() Worksheets("sheet1").Activate Range("A1:G1").Copy ActiveSheet.Paste Destination:=Worksheets("sheet").Range("??") End Sub ----------------------------------- 以上のようなコードがありますが Sheet1のA1:G1を10秒おきにSheet2の1行、2行、3行 と順番にコピーする Sub コピーして別のシートに貼り付ける() のコードを教えてください よろしくお願いいたします

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こういうことかな? Dim i As Integer Sub 一定秒おきに実行()  For i = 1 To 10   Application.Wait Now() + TimeValue("00:00:10")   DoEvents  コピーして別のシートに貼り付ける Next End Sub Sub コピーして別のシートに貼り付ける() Worksheets("sheet1").Range("A1:G1").Copy _   Worksheets("sheet2").Range("A1").Offset(i - 1) End Sub

kuoka
質問者

お礼

いつもありがとうございます。 完璧です。 引数がどこに渡っていくなどの基本的なことが理解できなくて苦しんでます。 VBA最初は見たくもなっかたのですが Wendy02さんのおかげで少し楽しくなってきました。

その他の回答 (2)

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

Sub 一定秒おきに実行() Dim i As Integer Static k For i = 1 To 10 If k = "" Then k = 2 Application.Wait Now() + TimeValue("00:00:10") コピーして別のシートに貼り付ける MsgBox "aaa" DoEvents For j = 1 To 7 Worksheets("sheet1").Cells(1, j) = Worksheets("sheet1").Cells(k, j) Next j k = k + 1 Next End Sub '---------- Sub コピーして別のシートに貼り付ける() Static r '* If r = "" Then r = 1 '* Worksheets("sheet1").Activate Range("A1:G1").Copy Worksheets("sheet2").Activate ActiveSheet.Paste Destination:=Worksheets("sheet2").Range(Cells(r, 1), Cells(r, 7)) '* r = r + 1 '* End Sub 後半は'* の部分を変えるぐらいで、簡単な仕組みで、質問者の要求がかなえられるのではないかと思います。 ただ前半部(タイマーの方)は、テストしようにも、入力の機会を与えてくれないので For j = 1 To 7 Worksheets("sheet1").Cells(1, j) = Worksheets("sheet1").Cells(k, j) Next j k = k + 1 Next を入れてテストしました。 上記前半(タイマーの方)現状では、Sheet1のK行->第1行へ-->後半でSheet2のr行へ貼り付け(1行ずつ、ずらして記録を残す) になってます。前半のタイマーのこの部分は削除してください。 株価の即時ニュースか何かでしょうか。うまくデータをSheet1の第1行に セットしてくれれば、上記後半が使えるかと思います。

kuoka
質問者

お礼

回答ありがとうございました 最近質問させていただいてるコードは 食料品に火を通す際の、周囲の環境と食料品内部の温度変化についての測定での記録に使いたいと思い、試行錯誤でやってます

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.1

Sub に引数をつけて、行番号を渡せばいいでしょう。 一例として、 上の方を、 コピーして別のシートに貼り付ける i にして、下の方を Sub コピーして別のシートに貼り付ける(ByVal rn As Integer) Worksheets("sheet1").Range("A1:G1").Copy Worksheets("sheet2").Cells(rn,1).PasteSpecial End Sub

kuoka
質問者

お礼

ごめんなさい うまく動きました Sheet名が変わっちゃてました ありがとうございました。

kuoka
質問者

補足

回答ありがとうございます 試してみましたが、 コンパイルエラー: SubまたはFuncutionが定義されていません がでました 何が悪いのか、よくわかりません・・

関連するQ&A