• ベストアンサー

【Excel】セルの値を変更した時間を記録したい

excel2002を使用している初心者です A1セルの値を変更したらその時間をすべてB列に順番に記録していく方法を考えています。 参考書によると If Target.Value = Range("A1").Value Then と ActiveCell.Value = Format$(Now, "hh:mm") 使うば良さそうだとのことです、 具体的にどのようにつなげてよいのか、またどんな風に宣言をしていけばよいのかなど、教えていただけると助かります

  • kuoka
  • お礼率56% (9/16)

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

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

こんばんは こういうことかな? '<シートモジュール> Private Sub Worksheet_Change(ByVal Target As Range) Dim rnum As Long With Target If .Address <> "$A$1" Then Exit Sub If IsEmpty(Range("B65536").End(xlUp)) Then   rnum = 0 Else   rnum = Range("B65536").End(xlUp).Row End If Application.EnableEvents = False   .Offset(rnum, 1).Value = Format$(Now, "hh:mm") Application.EnableEvents = True End With End Sub ただし、B1 に空白文字(" ")があっても、そこには書き込まれませんので、完全に空の状態にしてください。

その他の回答 (1)

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

ワークシートへのマクロを貼り付けですればよいです。 エクセル起動後、Alt+F11をおしてVBAエディターを起動してください。 そして、実行したいワークシートを選択して、対象をWorksheet、イベントをChangeとして、以下のコードを貼り付けて下さい。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Target.Offset(0, 1).Value = Format$(Now, "hh:mm") End If End Sub

kuoka
質問者

補足

早速の回答ありがとうございます。 上記のコードですとA列の行番号と同じB列の行番号に時間を記録することはできますが、今回値が変化するのはA1セルのみです。 A1の値を変更した時間をB1、B2、B3と連続で記録したいと思います。 よろしくお願いします。

関連するQ&A

  • Excel2007VBAセルの値とFormat関数

    ●質問の主旨 下記コード4行目と添付画像より Range("B30").ValueとFormat(Day(Date), "d")の戻り値は 等しいように思います。 ですが、E列を右クリックしたときに現在の時間を 入力できません。なぜでしょうか?ご存知の方ご教示願います。 ●質問の補足 エクセルでタイムカードを作成しています。 出勤・退勤打刻の列を右クリックすれば 現在の時刻が表記できるようにしたいと考えております。 下記のコードでは2月13日の出勤打刻(E30セル)しか できないことになりますが、徐々にコードを加筆していくつもりです。 ●コード Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 5 Then '出勤打刻の位置 Cancel = True 'コンテキストメニューの抑制 If Range("B30").Value = Format(Day(Date), "d") Then '本日の日付とB30セルの日付が合致すれば Range("E30").Value = Format(Time, "hh:mm") '出勤打刻の代入値を"hh:mm"でE30に表記する Else MsgBox "打刻位置が間違っています", vbExclamation, "打刻位置の確認" 'メッセージ表示 Cancel = True 'コンテキストメニューの抑制 End If End If End Sub

  • エクセルでデータ入力された日付と時間を自動入力する

    A1をA2に、B1をB2に、C1をC2に・・・ A1に入力したらA2に更新日付が入るという様に行いたいのですが、 ---------------- Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim r As Range For Each r In Target If r.Column = 1 Then r.Offset(0, 1).Value = Format(Now, “yyyy/mm/dd”“ ”“hh:mm:ss”) End If Next r End Sub ---------------- これをどのように改編したらいいのでしょうか?

  • 個数入れた隣のセルに日付したい

    Excel2000です。05-06-17に QNo 1455706でセルをクリックして日時を入れる方法をおそわりました。 No1manyu-manyu さまの 『ctrl』+『;』で日付、 『ctrl』+『:』で時刻を入れられるのは便利でしたが、一つのセルに両方を入れると2005/7/268:34の様につながってしまいます No2Wendy02 さまの以下のVBAはセルをクリックすると決定書式で入るのですが、これを K列(K4:K1000)に入荷個数の数値を入れたときL列(L4:L1000)のセルに表示するようにしたいのです。お助け ご教授ください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("L4:L1000")) Is Nothing Then Exit Sub  'L4:L1000"の範囲外は除外  If Not IsEmpty(Target.Value) Then Exit Sub '上書きはしない  Application.EnableEvents = False  Target.Value = Format$(Now, "mm/dd AM/PM hh:mm")  Application.EnableEvents = True End Sub

  • セルの時間入力について

    以下のコードで 00:00と入力すると最初は入力でいますが、 2回目の入力から、ユーザー定義でもhh:mmなのにセルが空になります。 数字が入ると問題有りません。 式の値(関数の入力)は00:00:00となっています。 どうか教えていただけませんでしょうか。 よろしくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns("L:M")) Is Nothing Or Selection.Count <> 1 _ Or Not IsNumeric(Target) Then Exit Sub If Target <= 2359 And Target Mod 100 < 60 Then Application.EnableEvents = False ' ' Debug.Print "Target.Address:" & Target.Address ' Debug.Print "Target.Address:" & Target.AddIndent With Target If Len(Target) = 4 Then Debug.Print "Len(Target) = 4" Debug.Print "Target:" & Target Debug.Print "Len(Target):" & Len(Target) .Value = Left(Target, 2) & ":" & Right(Target, 2) ElseIf Len(Target) = 3 Then Debug.Print "Len(Target) = 3" Debug.Print "Target:" & Target Debug.Print "Len(Target):" & Len(Target) .Value = "0" & Left(Target, 1) & ":" & Right(Target, 2) ElseIf Len(Target) = 2 Then Debug.Print "Len(Target) = 2" Debug.Print "Target:" & Target Debug.Print "Len(Target):" & Len(Target) .Value = "00:" & Right(Target, 2) ElseIf Len(Target) = 1 And Target = 0 Then Debug.Print "Len(Target) = 1 And Target=0" Debug.Print "Target:" & Target Debug.Print "Len(Target):" & Len(Target) .Value = "00:00" .Select ElseIf Len(Target) = 1 Then Debug.Print "Len(Target) = 1" Debug.Print "Target:" & Target Debug.Print "Len(Target):" & Len(Target) .Value = "00:0" & Right(Target, 1) End If .NumberFormatLocal = "hh:mm" End With Application.EnableEvents = True Else ' MsgBox "入力値が不正です。" With Target .Value = "" .Select End With Exit Sub End If End Sub 'この行まで

  • VBAでNOWから年と秒をはぶきたい

    VBAで質問です。 ボタンを押したらD4に月/日スペース時:分(10/20 17:07)が入るようにしました。 Range("D4").Value = Format(Now, "mm/dd hh:mm") 別のセルM6にc4にある担当者名とD4の情報を入れたいのですが、 うまくいきません。 NGのコード(1) Range("M6") = Range("C4") & "-" & Range("D4") NGのコード(2) Range("M6") = Range("C4") & "-" & Range("D4").Value = Format(Now, "mm/dd hh:mm") こうしたいのに 木村-10/20 17:07 こうなります 木村-2017/10/20 17:07:00 どうすれば年と秒を取り込まなく出来るのでしょうか?

  • 右クリック、ダブルクリックの操作

    勤務表作成してます。 A1に「ON・OFF」を表示します。 「ON」のときに、ダブルクリックで、上のセルを表示、右クリックで「1」を表示します。 「OFF」のときは、コンテキストメニュ-(通常の操作)が出来るようにしたいのですが、ON.OFFの切り替え操作のVBAがわかりません。 よろしくお願いします。 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ' ActiveCell = ActiveCell.Offset(-1, 0).Value ' ' If Target = Range("$A$1") Then ' Cancel = True If Range("$A$1").Value = "イベントON" Then Range("$A$1").Value = "イベントOFF" Else Range("$A$1").Value = "イベントON" ActiveCell = ActiveCell.Offset(-1, 0).Value Exit Sub End If Cancel = True If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'ActiveCell = "1" ' If Target = Range("$A$1") Then ' Cancel = True ' If Range("$A$1").Value = "イベントON" Then ' Range("$A$1").Value = "イベントOFF" If Range("$A$1").Value = "イベントON" Then ActiveCell = "1" Else: Range("$A$1").Value = "イベントOFF" Exit Sub End If Cancel = True If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End Sub

  • VBAの時間入力について

    先日、時間を文字列で、HH:mmのフォーマット入力するPGを教えて頂き、 内容理解をしているのですがわからない部分があります。 ★の部分の条件で、00:00も入力したいです。 ご存知か方がおられましたら教えてください。 よろしくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から 'Intersect:http://officetanaka.net/excel/vba/tips/tips118.htm 'Is Nothing:nullではない 'Selection.Count <> 1:選択数が1以下ではない(<> :等しくない) ' Not IsNumeric(Target):数値ではない If Intersect(Target, Columns(12)) Is Nothing Or Selection.Count <> 1 _ Or Not IsNumeric(Target) Then Exit Sub ' 'Target:セルの値は24:00以下 '2つの数値の除算を行いし,その剰余を返す 'Mod:2つの数値の除算を行いし,その剰余を返す '★ここで00:00時も入力したい。 If Target <= 2400 And Target Mod 100 < 60 Then ' Application.EnableEvents = False ' With Target ' If Len(Target) = 3 Then .Value = 0 & ":" & Right(Target, 2) ElseIf Len(Target) = 3 Then .Value = Left(Target, 1) & ":" & Right(Target, 2) Else .Value = Left(Target, 2) & ":" & Right(Target, 2) End If .NumberFormatLocal = "hh:mm" ' End With ' Application.EnableEvents = True ' Else MsgBox "入力値が不正です。" ' With Target ' .Value = "" .Select End With Exit Sub ' End If End Sub 'この行まで

  • Excel2007のカレンダーコントロール

    Excel2007のカレンダーコントロールで質問します。 Private Sub Calendar1_Click() ActiveCell.Value = Calendar1.Value ActiveSheet.Calendar1.Visible = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$4" Then ActiveSheet.Calendar1.Visible = True End If End Sub この状態ですと、セルA4をクリックしたときだけカレンダーコントロールが表示されます。 A列をどこでもクリックしたときにカレンダーコントロールが表示されるようにするには どこを、どう変更すればよいのでしょうか? 教えてください。

  • ダブルクリック・右クリックの操作方法

    勤務表作成してます。 A1に「ON・OFF」を表示します。 「ON」のときに、ダブルクリックで、上のセルを表示、右クリックで「1」を表示します。 「OFF」のときは、コンテキストメニュ-(通常の操作)が出来るようにしたいのですが、ON.OFFの切り替え操作のVBAがわかりません。 よろしくお願いします。 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveCell = ActiveCell.Offset(-1, 0).Value If Target = Range("$A$1") Then Cancel = True If Range("$A$1").Value = "イベントON" Then Range("$A$1").Value = "イベントOFF" Else Range("$A$1").Value = "イベントON" End If If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End If End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) ActiveCell = "1" ' If Target = Range("$A$1") Then ' Cancel = True ' ' If Range("$A$1").Value = "イベントON" Then ' Range("$A$1").Value = "イベントOFF" ' Else ' Range("$A$1").Value = "イベントON" ' End If If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End Sub

  • 値を変更後にセルがアクティブ状態に

    セルをダブルクリックして値を変えるマクロを作ったのですが 値を変更後にセルがアクティブ状態になってしまいます。 エンターを押したり他のセルをクリックすれば通常通りになるのですが、 VBAでも通常通りに戻すにはどうすればいいでしょうか? Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim mystr As String mystr = Target.Value If mystr = "Yes" Then Target.Value = "No" ElseIf mystr = "No" Then Target.Value = "Yes" End If End Sub を実行すると、 セルをクリックしてF2を押した時のような状態になってしまいます。 コードの最後に Target.Cells.Select を入れてみましたが、変わりませんでした。 スクショを撮ってみたのですが、カーソル?棒?が映りませんでした。

専門家に質問してみよう