プロが教える店舗&オフィスのセキュリティ対策術

VBAでマクロを走らせた日時をSheet2のAセルに入力する
はじめまして。
現在、ファイルを整理するマクロを使っています。
そのマクロを使った履歴を残す意味で、
いつマクロを走らせたかすぐにわかるように、
Sheet2のAのセル(2行目から)に走らせた日時を示したいと思っています。
マクロでの処理が終わったら、
毎回Sheet2に日時が入力されるようにするには、
どんな命令文を追記したらよいのでしょうか。
マクロに関しては知識がなく、
インターネットで調べて、
Sheets("Sheet2").Cells(R, "A").Value = Now
というのを追記してみたのですが、
Sheet2に入力はされるものの、
Aセルの行がとびとびに入力されたり、
整理したファイルの数だけ(複数)入力されてしまいます。
マクロを1回走らせたら1つの日時が入力されるようにしたいです。
Sub ()とEnd Subの間にFor RとNext Rがあり、
作業が繰り返されているようです。
転記ができないため、マクロを示すことができません。
さすがに、これだけの情報では難しいでしょうか。
わかるかたがいらっしゃいましたら、
よろしくおねがいします。

A 回答 (4件)

worksheets("sheet2").cells(rows.count,1).end(xlup).offset(1).value=now



end sub
の前に追加

参考まで
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
しっかり記入されました!
参考にさせていただきます。
本当にありがとうございました!!

お礼日時:2010/08/22 20:44

こんばんは



指定した列の「データが入っている一番下の行」を取得する便利な方法があります。

まずは以下の操作をしてみてください。
1.sheet2を選択
2.A1~A5に適当に文字を入力
3.A列の一番下の行を選択(Excelのバージョンが2003以前ならA65536、
 2007以降だともっと大きな行数)
4.マクロの記録開始
5.キーボードの「Ctrl」を押しながら「↑」を押す
6.マクロの記録終了
で記録されたマクロを確認しますと

Selection.End(xlUp).Select
が記録されていなす。

これを応用しますと、
Sheets("Sheet2").Range("A65536").End(xlUp).Row
で、Sheet2の最後の行を取得できます。

また、
Sheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0) = Now()
としますと、Sheet2のA列の一番下に、現在の時刻を記録できます。

p(^^)q
    • good
    • 0
この回答へのお礼

やってみました。
こういう考え方もあるんですね。
まったくの初心者ですので、
とても勉強になりました。
ほんとうにありがとうございます。

お礼日時:2010/08/22 20:46

すみません。


バグってました。m(__)m

Dim MaxRow As Long
Dim Max As Long

:
:
:

Max = Rows.Count
MaxRow = Sheets("Sheet2").Range("A1").End(xlDown).Row
If MaxRow = Max Then MaxRow = 2
Sheets("Sheet2").Cells(MaxRow + 1, "A").Value = Now

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
頂いた文を追記したところ、
Sheet2に日時が表示されますが、
(1)3行目から入力されてしまう
(2)2回目までしか記入されない
という問題が発生しました。
(2)の2回目までしか記入されない
というのは、2回目分は4行目に入力されるのですが、
以降、4行目が更新されていき、
前の履歴に上書きされてしまっているようです…

改めて、2行目から記入が始まり、
3回目以降もマクロを走らせた日時の履歴を
4行目、5行目…というように、
Sheet2のAセルにバーーっと入力していくには
どう変えたらよいでしょうか。
ご存知でしたらよろしくお願い致します。

お礼日時:2010/08/22 20:36

END Sub の直前(For RとNext Rの外)に下記のように記述してみてください。


下記マクロの動作条件が1つあって、Sheet2のA1セルが空白だと
エラーになります。

 :
 :

MaxRow = Range("A1").End(xlDown).Row
Sheets("Sheet2").Cells(MaxRow + 1, "A").Value = Now
End Sub
    • good
    • 0

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