雖然與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