Note: The other languages of the website are Google-translated. Back to English

セルが変更されたときに日付と時刻を自動的に記録するにはどうすればよいですか?

静的な日付と時刻を手動で挿入したり、数式を使用してシステム時刻に応じて変化する動的な日付を挿入したりするのは簡単です。 値を変更または入力したときに日付と時刻を自動的に記録する場合、この問題の処理方法は多少異なる場合があります。 ただし、この記事では、次の手順でこのタスクを解決できます。

セルがVBAコードで変更されたときに日付と時刻を自動的に記録します

OfficeタブOfficeでタブ付きの編集と閲覧を有効にし、作業をはるかに簡単にします...
Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます
  • 何でも再利用: 最もよく使用される、または複雑な数式、グラフなどをお気に入りに追加して、後ですぐに再利用できます。
  • 20以上のテキスト機能: テキスト文字列から数値を抽出します。 テキストの一部を抽出または削除します。 数字と通貨を英語の単語に変換します。
  • マージツール:複数のワークブックとシートをXNUMXつに。 データを失うことなく複数のセル/行/列をマージします。 重複する行と合計をマージします。
  • 分割ツール:値に基づいてデータを複数のシートに分割します。 XNUMXつのワークブックから複数のExcel、PDF、またはCSVファイル。 XNUMX列から複数列。
  • 貼り付けスキップ 非表示/フィルタリングされた行; カウントと合計 背景色別; パーソナライズされた電子メールを複数の受信者にまとめて送信します。
  • スーパーフィルター: 高度なフィルタースキームを作成し、任意のシートに適用します。 並び替え 週、日、頻度など。 フィルタ 太字、数式、コメント...
  • 300 以上の強力な機能。 Office 2007-2021 および 365 で動作します。 すべての言語をサポートします。 企業や組織に簡単に導入できます。

矢印青い右バブル セルがVBAコードで変更されたときに日付と時刻を自動的に記録します

たとえば、値の範囲があり、列Bに新しい値を変更または入力すると、次のスクリーンショットのように列Cに現在の日付と時刻が自動的に記録されます。

doc-update-time-value-changes-1

このタスクは、次のVBAコードで完了できます。 このようにしてください:

1。 を押し続けます Alt + F11 キーを押して Microsoft Visual Basic forApplicationsウィンドウ。

2。 次に、左から使用済みのワークシートを選択します プロジェクトエクスプローラー、ダブルクリックして開きます モジュール、次に、次のVBAコードをコピーして空のモジュールに貼り付けます。

VBAコード:セルが変更されたときに日付と時刻を自動的に記録します

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

doc-update-time-value-changes-1

3. 次に、このコードを保存して閉じてワークシートに戻ります。セルの値を変更するか、列Bに新しいデータを入力すると、日付と時刻が列Cに自動的に記録されます。

注意:

1.上記のコードでは、「B:B」を、このスクリプトのセル値を変更する他の列に移動します。 Set WorkRng = Intersect(Application.ActiveSheet.Range( "B:B")、Target).

2.これで xOffsetColumn = 1 スクリプトでは、値の変更列の隣の最初の列に日付と時刻を挿入して更新できます。数値1を2,3,4,5、XNUMX、XNUMX、XNUMXなどの他の数値に変更できます。つまり、日付が挿入されます。変更された値の列に加えて、XNUMX番目、XNUMX番目、XNUMX番目、またはXNUMX番目の列。

3.変更された列の値を削除すると、日付と時刻も削除されます。


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (108)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
これをXNUMXページに複数回行うコードをどのように記述しますか。 列Bのテキスト、Cの日付、Dのテキスト、Eの日付?
このコメントは、サイトのモデレーターによって最小化されました
[quote]これをXNUMXページに複数回行うコードをどのように記述しますか。 列Bのテキスト、Cの日付、Dのテキスト、Eの日付?ヒラリー[/ quote]これは古いことは知っていますが、長くて簡単な方法は、変数宣言をコピーして新しい変数(つまり、WorkRng1とRng1)を作成することです。 また、「if」ステートメントをコピーして、変数を新しい変数名に変更する必要があります。
このコメントは、サイトのモデレーターによって最小化されました
[quote]これをXNUMXページに複数回行うコードをどのように記述しますか。 列Bのテキスト、Cの日付、Dのテキスト、Eの日付?ヒラリー[/ quote]コードは次のとおりです。PrivateSubWorksheet_Change(ByVal Target As Range)'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer'範囲を変更して、更新する列を選択します。つまり、( "A: A ")または(" B:B ")Set WorkRng = Intersect(Application.ActiveSheet.Range(" E:E ")、Target)xOffsetColumn =1'1番目のタイムスタンプの場合'WorkRng1などの新しい変数名を作成します。 Rng1など。DimWorkRng1AsRange Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range( "G:G")、Target)xOffsetColumn1 =0'初めてのタイムスタンプIfNotWorkRng Is Nothing次に、Application.EnableEvents = False For Each Rng In WorkRng If Not VBA.IsEmpty(Rng.Value)Then Rng.Offset(0、xOffsetColumn).Value = Now Rng.Offset(0、xOffsetColumn).NumberFormat = "mm / dd / yyyy "Else Rng.Offset(1、xOffsetColumn).ClearContents End If Next Application.EnableEvents = True EndIf'1番目のタイムスタンプIfNotWorkRng1 Is Nothing Then Application.EnableEve nts = False For Each Rng1 In WorkRng1 If Not VBA.IsEmpty(Rng0.Value)Then Rng1.Offset(1、xOffsetColumn0).Value = Now Rng1.Offset(1、xOffsetColumn0).NumberFormat = "mm / dd / yyyy" Else Rng1.Offset(XNUMX、xOffsetColumnXNUMX).ClearContents End If Next Application.EnableEvents = True End If End Sub
このコメントは、サイトのモデレーターによって最小化されました
ある範囲の列に対してこれを実行したい場合はどうなりますか?
このコメントは、サイトのモデレーターによって最小化されました
次のように範囲(B:B)を変更します。(10:20)列10から20(D5:D40)列Dの列5から40お役に立てば幸いです。
このコメントは、サイトのモデレーターによって最小化されました
申し訳ありませんが、列を行と交換しましたが、それでも機能します。 (D:P)列DからPへ(D5:D5)列Dから行5のPへ
このコメントは、サイトのモデレーターによって最小化されました
保存すると機能しますが、再度開くと機能しません
このコメントは、サイトのモデレーターによって最小化されました
[引用]保存すると機能するが、再度開くと機能しないアーリフ[/ quote]Aarifと同じ問題...XNUMX分前はうまくいきましたが、今はうまくいきません...また、日付と時刻ではなく時刻だけが必要だったので、「。NumberFormat」を次のように編集しましたhh:mm:ss、保存、テスト済み...違いはありません...まだ日付と時刻を入力しています...? もう一度VBを開き、送信されたテキストを入力して、もう一度保存しましたが、それでもうまくいきませんでした。XNUMX回目に実行しました。フォーマットは指示どおりに実行され、突然、ちょうどいい時間になりました。 非常に奇妙なことに、私が最初にSEARCH関数を使用して、自分の目で見ることができるセル内の値を検索して以来、Excellは幽霊が出ると長い間思っていましたが、Excelはそれが存在しないと主張しました!? 助けることができるExcelの達人やエクソシストはいますか? なぜそれは私のVBを無視し、それがしたようにタイムスタンプを付けないのですか...? ありがとう:cry:
このコメントは、サイトのモデレーターによって最小化されました
[quote]これをXNUMXページに複数回行うコードをどのように記述しますか。 列Bのテキスト、Cの日付、Dのテキスト、Eの日付?ヒラリー[/quote]引用に対する答えは何ですか
このコメントは、サイトのモデレーターによって最小化されました
これを実行したいがアクティブシート上にない場合はどうなりますか?バックグラウンドで実行し、B列にエントリがあるたびに更新しますか?
このコメントは、サイトのモデレーターによって最小化されました
タイムスタンプ列に影響を与えている列が他の複数の列の合計である場合はどうなりますか? たとえば...列Hは=Sum(E + F + G)であり、列Hが変更されるたびに、または本質的に列E、F、またはGが変更されたときに、ColumIでタイムスタンプを実行したいと思います。 。 手伝ってもらえますか?
このコメントは、サイトのモデレーターによって最小化されました
助けが必要です! XNUMXつのセルのいずれかが変更されるたびにタイムスタンプを実行しようとしています。 理想的には、これらのセルの合計が変更されたときにこれを実行したいと思います。 例えば。 セルE、F、Gが変更され、セルHがこれらXNUMXつのセルの合計になります。 セルHが変更されたら、セルIにタイムスタンプを付けたいと思います。 これは可能ですか? どうもありがとうございます
このコメントは、サイトのモデレーターによって最小化されました
上記のコードを実行しようとしています。 ただし、変更を記録したいセルはチェックボックスにリンクされているため、「TRUE」または「FALSE」のいずれかになります。 何らかの理由で、セルが変更されたときにコードが機能しません。 ただし、「yes」と言うものを手動で挿入すると、コードは正常に機能します。 あなたが知っているこの問題の回避策はありますか? ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
履歴データに対してこれを行うことは可能ですか? 昨日またはXNUMXか月前にセルに変更を加えた場合、このコードの形式を使用してそれらの日付を取得できますか?
このコメントは、サイトのモデレーターによって最小化されました
特定の変更に基づいてタイムスタンプを付ける方法はありますか? たとえば、空白、「OK」、「Act」などのドロップダウンオプションの列を含むスプレッドシートがあります。 タスクが完了すると、ドロップダウンを手動で使用して[OK]を選択します。 「OK」が選択されている場合は日付スタンプを関連付けたいのですが、「Act」が選択されている場合は関連付けられません。 ドロップダウンの「Act」オプションは、タスクの期限が過ぎている場合に使用されますが、実際には、アイテムがいつ完了したかを追跡しようとしています。 上記のコードでこれを達成する方法はありますか? ありがとう!
このコメントは、サイトのモデレーターによって最小化されました
これを解決できましたか?
このコメントは、サイトのモデレーターによって最小化されました
とても良い質問です。 整理しましたか、教えていただけますか?
感謝
このコメントは、サイトのモデレーターによって最小化されました
範囲を( "A:Q")に変更できますが、AQセルのデータが変更/削除された場合、"S"に入る日付と時刻が必要です。 私はVBAに挑戦しています。 どんな助けでも大歓迎です!
このコメントは、サイトのモデレーターによって最小化されました
申し訳ありませんが、質問を投稿したばかりで、これに対する回答が必要です...このコメントを見逃したに違いありません...誰かが助けてくれることを願っています!
このコメントは、サイトのモデレーターによって最小化されました
隣接するセルの日付のみが変更されるように変更するにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
変更されたセルの隣のセルではなく、特定のセルに記録するタイムスタンプを取得するにはどうすればよいですか。 これらのセルのいずれかに変更が発生したときに、セルの行にタイムスタンプを付けようとしています。タイムスタンプをXNUMXつの特定のセルに記録したいのですが、誰かがこれを手伝ってくれますか? ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、WBの監査性に優れているので、よろしくお願いします。 コメントが追加または変更されるたびに日付/時刻がWBのどこかに記録されるようにこれを変更する方法はありますか? これが一般的な質問であることは知っていますが、それが可能かどうかはわかりません(残念ながら、MS 2010の場合、.commentプロパティには、いつ入力されたかを識別するためのdateプロパティがありません。Mike
このコメントは、サイトのモデレーターによって最小化されました
14桁の数字が入力された場合にのみ、A:A列を読み取り、B:Bにタイムスタンプを付けるように構成するにはどうすればよいですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、VBAコーディングのヘルプが必要です。 人に割り当てられ、ケースのステータスを持つケースを含むスプレッドシートを作成しています。 担当者は列Hにあり、列Hのセルが更新または名前で変更された場合は、列Iに日付スタンプが必要です。 同様に、私は列Jにケースのステータスがあり、ステータスが入力または変更されたときに列Kに日付スタンプが必要になります。 また、譲受人以外の名前またはステータスがある場合は、列IおよびKの日付スタンプを空白にする必要があります。 どんな助けでもいただければ幸いです。 ありがとう
このコメントは、サイトのモデレーターによって最小化されました
このコードを他の場所で見つけて、使用できるように変更しました。 適切に実行すれば、セルに関数を入力したり、ファイルを開くたびに日付をその日の日付に変更したりすることを心配する必要はありません。 -Excelを開きます-「Alt+F11」を押します-変更を適用するワークシートをダブルクリックします(左側にリストされています)-以下のコードをコピーして貼り付けます-範囲(_:_)入力を対応するように調整します更新する列に-Offset(0、_)入力を調整して、日付を表示する列に対応させます(以下のバージョンでは、列Dを更新しており、列Fに日付を表​​示します。したがって、列Dから2列上の「2」の入力エントリ)-保存を押します-同じコードを必要とする他のワークシートがワークブックにある場合は、上記の手順を繰り返します-表示する列の数値形式を変更する必要がある場合があります以下のコードをコピー/貼り付けした後、日付を「一般」に変更し、「####」が表示されている場合は列の幅を増やします。____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range)If Intersect(Target、Range( " D:D "))Nothing Then Exit Sub Target.Offset(0、2)= Date End Sub ___ _________________________________________________________ 幸運を...
このコメントは、サイトのモデレーターによって最小化されました
このコードは、クリックすると日付を表示します。セルのコンテンツが変更された場合にのみ日付を表示できますか?クリックしただけで何も変更されていない場合、日付は表示されないか、以前に入力した日付が残りますか?
このコメントは、サイトのモデレーターによって最小化されました
マクロにvloocup式を記録している場合、その日付を自動的に1日に変更するにはどうすればよいですか?21年07月2017日のように、翌日は22年07月2017日に変更されます。vbaコードがある場合は自動的にpls共有します。
このコメントは、サイトのモデレーターによって最小化されました
この行を置き換えます
Rng.Offset(0、xOffsetColumn).Value = Now

〜へ
Rng.Offset(0、xOffsetColumn).Value = Now + 1
このコメントは、サイトのモデレーターによって最小化されました
コードをありがとうございました! まさに私が探していたもの!!
このコメントは、サイトのモデレーターによって最小化されました
ご協力ありがとうございました :-)
ここにはまだコメントが投稿されていません
もっと読む
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護