- ベストアンサー
VBAでマクロを使って日時をシートに入力する方法
- VBAでマクロを使って日時をSheet2のAセルに入力する方法を教えてください。
- Sheet2のAセルにマクロで走らせた日時を入力するための命令文を追記する方法を教えてください。
- マクロを1回走らせたら1つの日時が入力されるようにするために、Forループを修正する方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
worksheets("sheet2").cells(rows.count,1).end(xlup).offset(1).value=now を end sub の前に追加 参考まで
その他の回答 (3)
- rukuku
- ベストアンサー率42% (401/933)
こんばんは 指定した列の「データが入っている一番下の行」を取得する便利な方法があります。 まずは以下の操作をしてみてください。 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
お礼
やってみました。 こういう考え方もあるんですね。 まったくの初心者ですので、 とても勉強になりました。 ほんとうにありがとうございます。
- yucco_chan
- ベストアンサー率48% (828/1705)
すみません。 バグってました。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
お礼
ご回答ありがとうございます。 頂いた文を追記したところ、 Sheet2に日時が表示されますが、 (1)3行目から入力されてしまう (2)2回目までしか記入されない という問題が発生しました。 (2)の2回目までしか記入されない というのは、2回目分は4行目に入力されるのですが、 以降、4行目が更新されていき、 前の履歴に上書きされてしまっているようです… 改めて、2行目から記入が始まり、 3回目以降もマクロを走らせた日時の履歴を 4行目、5行目…というように、 Sheet2のAセルにバーーっと入力していくには どう変えたらよいでしょうか。 ご存知でしたらよろしくお願い致します。
- yucco_chan
- ベストアンサー率48% (828/1705)
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
お礼
ご回答ありがとうございます。 しっかり記入されました! 参考にさせていただきます。 本当にありがとうございました!!