ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How Capture Cell Value Before Change Event Fires? (https://www.excelbanter.com/excel-programming/392343-how-capture-cell-value-before-change-event-fires.html)

MVP Wannabe

How Capture Cell Value Before Change Event Fires?
 
I am working with the Worksheet change event to perform cell level edits. How
do I get the value of a selection prior to the change event? I assume the
value is stored somewhere in order to enable the undo event to work. I also
read that using the worksheet_Change event disables the undo.

Am I required to write a Worksheet_BeforeChange event, or can I just get the
value so I know what it is?

Thanks in advance

Jim Rech

How Capture Cell Value Before Change Event Fires?
 
Wherever the old values is stored they are not accessible to us. So..

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OldValue As Variant
With Application
.EnableEvents = False
.Undo
OldValue = Target.Cells(1).Value
.Undo
.EnableEvents = True
End With
MsgBox "Value was " & OldValue
End Sub

This mades the simplifying assumption only one cell was changed. In 'real
life' you'd need to capture the values in the entire Target range, which can
be more than one cell.

--
Jim
"MVP Wannabe" <MVP wrote in message
...
|I am working with the Worksheet change event to perform cell level edits.
How
| do I get the value of a selection prior to the change event? I assume the
| value is stored somewhere in order to enable the undo event to work. I
also
| read that using the worksheet_Change event disables the undo.
|
| Am I required to write a Worksheet_BeforeChange event, or can I just get
the
| value so I know what it is?
|
| Thanks in advance



Rick Rothstein \(MVP - VB\)

How Capture Cell Value Before Change Event Fires?
 
I am working with the Worksheet change event to perform cell level edits.
How
do I get the value of a selection prior to the change event? I assume the
value is stored somewhere in order to enable the undo event to work. I
also
read that using the worksheet_Change event disables the undo.

Am I required to write a Worksheet_BeforeChange event, or can I just get
the
value so I know what it is?


There is already a kind of BeforeChange event... it is called
SelectionChange. Add this code to your worksheet's code window...

Dim LastText As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
LastText = Target.Value
End Sub

and, when in the Change event, you can reference LastText to see what the
text was when you entered the cell. Note that the Dim statement for the
LastText statement is NOT declared inside any procedures... just place it at
the top of the code window, under your Option Explicit statement if you are
using one (and you should be using one<g).

Rick



All times are GMT +1. The time now is 12:34 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com