ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   input info when pasted in cells (https://www.excelbanter.com/excel-programming/447858-input-info-when-pasted-cells.html)

kardifflad

input info when pasted in cells
 
Hello.
I have this bit of code thats set as a change event in my spreadhseet. So basically when something is entered in column A it updates info columns D,E,F,G. (so i can see who did something and when).
However this only work if the user types info in but not if they copy and paste a load in at a time. So for example if they pasted in 100 entries into column A, then the other columns won't update.
how can i change the code to deal with pasting? (i have tried the different change events in the spreadsheet coding but nothing works. Thanks in advance.

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("A:A")) Is Nothing Or Target.Cells.Count 1 Then Exit Sub
Target.Offset(0, 2).Value = "OBJECT"
Target.Offset(0, 3).Value = Application.UserName
Target.Offset(0, 4).Value = Date
Target.Offset(0, 5).Value = Range("B2")
Target.Offset(0, 6).Value = Date + 160


End Sub

Claus Busch

input info when pasted in cells
 
Hi,

Am Tue, 18 Dec 2012 18:31:55 +0000 schrieb kardifflad:

If Intersect(Target, Range("A:A")) Is Nothing Or Target.Cells.Count
1 Then Exit Sub


change to :
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub


Regards
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Ben McClave

input info when pasted in cells
 
Hello,

Two other quick recommendations. First, you may want to disable events while this code runs so that the cells being updated don't continually run the procedure. The other suggestion is to change the "Target.Offset..." line to "Intersect(Target, Range"A:A")).Offset...". This way, if someone pastes data into a range that includes not only column A, but other columns as well, the offset formula will keep the tracking information in the proper columns.

Here is an updated procedure to illustrate:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Intersect(Target, Range("A:A"))
.Offset(0, 2).Value = "OBJECT"
.Offset(0, 3).Value = Application.UserName
.Offset(0, 4).Value = Date
.Offset(0, 5).Value = Range("B2")
.Offset(0, 6).Value = Date + 160
End With
Application.EnableEvents = True
End Sub

kardifflad

thank you. This worked excellent until i run another macro in my workbook. The other macro copies all the data from this book into another one, after it has copied the data it then deletes it from the current workbook by using .Clearcontents.
however when it clears the contents the worksheet change code youve given me kicks in and enters data in the offset cells in the same way it would if data was copied into them.
so for some reason when clearing contents it is also thinking data is being entered. Is that easily fixable or should i perhaps look to remove this code from my worksheet change code and instead have this onformation updated when i run the macro that copies the data?? (if that makes sense)

Thank you

Ben McClave

input info when pasted in cells
 
Hello,

All you'll need to do is disable events right before the .ClearContents line and then enable them again right after it. For example:

Application.EnableEvents = False
Range("A:A").ClearContents
Application.EnableEvents = True


kardifflad

oh course. how simple!! a Homer Simpson moment me thinks.

Thanks for your help.


All times are GMT +1. The time now is 02:11 AM.

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