2015-03-26 2 views
0

код, который у меня есть, работает хорошо. Проблема у меня в том, что я хочу быть , способный отключать и отслеживать изменения. Причина состоит в том, что следует отслеживать не все изменения пользователей. Все изменения записываются на другом листе. Пожалуйста, смотрите мой код ниже:Выключение/изменение дорожки vba excel

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

If ActiveSheet.Name = "TrackChanges_Record" Then Exit Sub 

Application.EnableEvents = False 

UserName = Environ("USERNAME") 

NewVal = Target.Value 

Application.Undo 

oldVal = Target.Value 

lr = Sheets("TrackChanges_Record").Range("A" & Rows.Count).End(xlUp).Row + 1 

Sheets("TrackChanges_Record").Range("A" & lr) = Now 
Sheets("TrackChanges_Record").Range("B" & lr) = ActiveSheet.Name 
Sheets("TrackChanges_Record").Range("C" & lr) = Target.Address 
Sheets("TrackChanges_Record").Range("D" & lr) = oldVal 
Sheets("TrackChanges_Record").Range("E" & lr) = NewVal 
Sheets("TrackChanges_Record").Range("F" & lr) = UserName 

Target = NewVal 

Application.EnableEvents = True 
End Sub 
+0

, не стесняйтесь, чтобы отметить свой ответ, как ваше решение, если оно помогло вам –

ответ

0

Попробуйте это:

If ActiveSheet.Name = "TrackChanges_Record" or Environ("USERNAME") = "UserToSkip1" or Environ("USERNAME") = "UserToSkip2" Then Exit Sub 
+0

Спасибо за этот код. Я надеялся, что у пользователя будет возможность отключить или включить этот код, я ставлю выше – James

+0

. Вместо этого у меня есть восстановление комментариев. – James

+0

@James вы можете вставить окно сообщения, которое просит включить или выключить, но затем каждый пользователь может самостоятельно решить, и у вас нет контроля –