虽然与Worksheet_Change
工作,你必须确保两件事。
1)相应的错误处理是必须的
2)关闭.EnableEvents
以避免无限循环的可能性。
的假设
1)要捕获更改单元格A1
2)你想在A2
显示 “S”
所以,请更改为适用于下面的代码。
CODE
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
希德
我注意到,如果我只需单击单元格,而不在它改变值或文本,它在下一个单元格中插入一个值“S”。有没有一种方法可以将原始值保存或存储在隐藏的工作表中,并将其与单元格出口处的单元格值进行比较。这样我就可以从鼠标点击中区分出真正的变化。 – Sithelo 2012-03-15 07:09:56