Excel单元格值的更改会在另一个单元格中插入“S”

我粘贴了工作表1。 注意栏目。 要被监视的一个是标题描述和健康人。 一旦在列下发生更改,则插入一个S。 例如Spectacle Frame更改为Spec Frame,我们在Change下插入S. 更改列是空的。 在Healthman下面,当价格变化时,在变更栏中插入一个P. 当一个产品被删除,即删除行时,在变更下插入一个X. 当插入一行,因为我是与一个隐藏的单元格细胞多数民众赞成我为什么隐藏表更新。 我尝试了以前的代码,它不工作,并认为粘贴表单进行审查。
图例:P =价格变化
N =新X =删除S =说明
代码更改说明HEALTHMAN

40501 Spectacle Frame 40609 Sunglasses 40525 S Ready Made Optical 41008 Spectacle Case 43025 P Transfer - Zyl or Metal Frame 198.00 43126 P Transfer - Nylon Supra Frame 314.00 43136 P Transfer - Rimless Frame 359.00 

在使用Worksheet_Change您必须确保2件事。

1)适当的error handling是必须的

2)closures.EnableEvents以避免无限循环的可能性。

的假设

1)您想捕获单元格A1更改

2)你想在A2显示“S”

所以请在下面的代码中适用。

 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Whoa If Not Intersect(Target, Range("A1")) Is Nothing Then Application.EnableEvents = False Range("A2").Value = "S" End If LetsContinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume LetsContinue End Sub 

跟进

这是你正在尝试?

这在“ThisWorkbook”代码区域。

 Private Sub Workbook_Open() Dim hiddenSheet As Worksheet Set hiddenSheet = Me.Worksheets.Add hiddenSheet.Visible = xlSheetVeryHidden On Error Resume Next Application.DisplayAlerts = False Sheets("HiddenSheet").Delete Application.DisplayAlerts = True On Error GoTo 0 hiddenSheet.Name = "HiddenSheet" Sheet1.Range("A1:D15").Copy hiddenSheet.Range("A1:D15") End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Application.DisplayAlerts = False Sheets("HiddenSheet").Delete Application.DisplayAlerts = True On Error GoTo 0 End Sub 

这在相关的表单区域

 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Whoa If Not Intersect(Target, Range("A1:D15")) Is Nothing Then Dim old_value Application.EnableEvents = False old_value = Sheets("HiddenSheet").Range(Target.Address).Value If Target.Value <> old_value Then '~~> Change 1 to whatever offset that you want. Target.Offset(0, 1).Value = "S" End If End If LetsContinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume LetsContinue End Sub 

HTH

希德

您可以使用Worksheet_Change事件。 看看这个和那个例子。

要添加到Workseet的示例代码 – 当您更改另一个单元格时,A3会自动更改,如果更改的单元格为A1,

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("A1").Address Then Range("A3") = "You changed A1" ElseIf Target.Address <> Range("A3").Address Then 'to prevent a change of A3 to trigger an update Range("A3") = "You changed another cell" End If End Sub