2016-04-15 10 views
0

ワークシートに表があります。 VBAを使用して、そのテーブルに加えられた変更をキャプチャしたいと思います。これは可能ですか?VBAを使用してExcelで変更されたセルの内容をキャプチャする方法はありますか?

たとえば、最初はC4 = 14です。ユーザーがC4 = 18に変更された場合、どのセルが変更されたのか(この場合はC4)、変更されたセル(この場合は18)がわかります。高度な機能の

、ユーザがC5C4を変更、行を追加した場合には(行4上の行を追加)、およびC4 = 11(新しいC4)を加えます。これは捕らえられますか?どのように元の行4を削除するのですか?削除されたコンテンツをキャプチャできますか?

何か助けていただければ幸いです。

おかげ残念ながら答えはノーのではなく、本当に

+0

「ワークシート変更」イベントを調べ、セル(ターゲット)をキャプチャして新しい値と比較します。 – BruceWayne

+1

https://msdn.microsoft.com/en-us/library/office/ff839775.aspx – CMArg

+0

@CMArgありがとうございます。私はそれを徹底的に調べます。 – NewGuyComesIn

答えて

0

。ワークシート変更イベントがトリガーされるまでに、ターゲットの値は新しい値になり、古い値は失われます。

対象のワークブックに対して実行されたすべてのアクションをミラーリングした隠れたワークブックを維持している人を一度読んだので、変更を追跡するために使用することができました。しかし、明らかにこれは多くの努力です。

代わりに、Application.Undoを使用して試してみることもできます。したがって、ワークシート変更イベントから、値を記録し、Application.Undoを適用し、その値を記録してから最初の値に置き換えます。それは本当に面倒です。

+0

あなたの言ったことに私は従っていません。私はワークシートの変更とターゲットをテストしました。変更された値を取得し、行/列を追加した後に値を追加できます。ただし、削除したコンテンツのキャプチャに問題があります。この部分について話していますか? – NewGuyComesIn

+0

申し訳ありませんが、私はあなたの質問を誤解しました。はい、あなたは新しい価値を見つけることができますが、私のコメントは削除されたコンテンツに関してまだ立っています。変更イベントは、変更がコミットされた後に起動されるため、元の値は使用できません。 – steveo40

+0

これまでのところ、削除されたコンテンツをキャプチャする方法を見つけることができません。多分あなたは正しいです。 – NewGuyComesIn

0

A1からD4と表記します。ワークシートのコード領域に次のコードを入力します

Public OldValue As Variant 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Range("A1:D4"), Target) Is Nothing Then 
    Else 
     If Target.Count = 1 Then 
      MsgBox "Previous Value: " & OldValue & vbCrLf & "New value: " & Target.Value 
     End If 
    End If 
End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Intersect(Range("A1:D4"), Target) Is Nothing Then 
    Else 
     If Target.Count = 1 Then 
      OldValue = Target.Value 
     End If 
    End If 
End Sub 

これは、単純な単一のセルをクリックし、タイプの編集のために動作します。 は古い値を検出して記録します。 Changeには、古い値と新しい値の両方が表示されます。

これは、マルチセルコピー/ペーストでは機能しません。

+0

コードをありがとう。私も同様のことをしました。今では、行/列を追加した後に変更された値と追加された値を取得できます。しかし、私は削除されたコンテンツをキャプチャするのに問題があります。削除された値をキャプチャする方法はありますか? – NewGuyComesIn

+0

@NewGuyComesIn .............このシンプルなアプローチは、**単一セル**の変更のみで動作します..............削除などのマルチセルの変更をキャプチャします列全体が可能ですが、もっと複雑になります! –

関連する問題