電子書籍の厳選無料作品が豊富!

下記のマクロはツール、マクロ、新しいマクロの記録で作成しました。
順序はa1に ”=RSS|'3315.T'!現在値” 最初から入力しておきます。
1回目a1に楽天のマーケットスピード  (MS) より数字が入力されます
a1に入力したすうじをa5とa6にコピーします。
2回目 MS より次の入力が入ります。
a1に入力したすうじをa5にコピーします。
a5,a6 を a6,a7 にコピーします。
3回目 MS より次の入力が入ります。
a1に入力したすうじをa5にコピーします。
a5,a6,a7 を a6,a7,a8 にコピーします。
4回目 MS より次の入力が入ります。
a1に入力したすうじをa5にコピーします。
a5,a6,a7,a8 を a6,a7,a8,a9 にコピーします。
n回目 MS より次の入力が入ります。
a1に入力したすうじをa5にコピーします。
a5,a6,a7,a8,-----a? を a6,a7,a8,a9,-----a? にコピーします。
以後入力有り次第 繰り返し続けて記録したいのです。

下記のマクロはa列に記録ですがb、c、d、と4箇所形式は同じですがデータの違いのが有るのですが
a,b,c,d,列入力順序がばらばらなのです
a列のみでもお願いします。
Sub M3()
Range("A1").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range("A5:A6").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A5").Select

Range("A1").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A5:A6").Select
Selection.Copy
Range("A6").Select
ActiveSheet.Paste

Range("A1").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A5:A7").Select
Selection.Copy
Range("A6").Select
ActiveSheet.Paste
Range("A5").Select

Range("A1").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A5:A8").Select
Selection.Copy
Range("A6").Select
ActiveSheet.Paste
Range("A5").Select

Range("A1").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A5:A9").Select
Selection.Copy
Range("A6").Select
ActiveSheet.Paste
Range("A5").Select

Range("A1").Select
Selection.Copy
Range("A5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A5:A10").Select
Selection.Copy
Range("A6").Select
ActiveSheet.Paste
Range("A5").Select
End Sub

A 回答 (3件)

こういう同じ場所にデータが入って来るものは、マクロの記録では、扱うのは無理です。

マクロの記録はどういうところに向いているか、限界は何か、などVBAをもっと勉強しないと。
多分(注)イベントという仕組みで、どれもシートのChangeイベントの助けで、そのキッカケで、データ取り込み(他のセルに、次のデータで壊されないようにA1セルから退避する)をする。
ーー
それに>a5,a6,a7,a8 を a6,a7,a8,a9 にコピーします
などのところは、くどく繰り返さないでも、今有るデータの最下行の下行にデータを写す(移す、代入する)という処理でよいのでは。そして最後に昇順や降順にソートすればよいのではないのかな。
最下行は
Sub test01()
MsgBox Range("A65236").End(xlUp).Offset(1, 0).Row
End Sub
を参考にすればよいと思う。
(注)動的な、WEBデータ相手の処理ならば、イベント処理を使ってで、うまく行くかどうか、テストも出来てないので、自信はないが。初心者がやるには難しすぎるように思う。
    • good
    • 0

A1に数値が入力されたら処理を実行するには、


この場合は、
Worksheet_Calculate イベント
Workbook_SheetCalculate イベント
などを使うのではないですか。
もう少し勉強しましょう。
    • good
    • 0

はじめまして



「マクロの記録」では解決できません。
自分でマクロを編集する必要があります。

まずは「MS より次の入力が入ります。」のタイミングでマクロを実行する必要があります。
A1の値を変更したら、その都度手動でマクロを実行するのが一番手っ取り早い方法です。
また、「イベントプロシージャ」の「Workbook_SheetChange」を使って、A1が変更されたときに自動的にマクロを実行することもできます。

次に、
[A65536].End(xlUp).Row
という数式を使えば、データが入っている一番下の行の番号が分かります。(A65536はA列の一番最後のセルですが、Excelのバージョンによって異なります。使用しているExcelで確認してください)
もっとも、最後の行を調べなくても、
Range("A5").Select
Selection.Copy
Selection.Insert Shift:=xlDown
と、「挿入-コピーしたセル」という機能を使えば、自動的にデータを下へずらすことができます。
http://www.jpita.or.jp/hpv3/ziten/mokutekibetu/e …

この回答への補足

お世話になります。
os win xp
excel 2003

補足日時:2009/02/08 20:28
    • good
    • 0
この回答へのお礼

お勉強無しで
参考になりました。

お礼日時:2009/02/09 19:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!