您可能已經設置了Application.EnableEvents = False。在VBA編輯器中打開立即窗口並輸入application.EnableEvents = True
,然後按ENTER鍵重新打開它們。
另外,如果您不想導致更改工作表和重新觸發事件的循環,則需要禁用事件。 IsEmpty函數是VBA略有不同,你的代碼可以更新,這將也處理的不僅僅是1個單元改變多個以下
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim cell As Variant
Application.EnableEvents = False
For Each cell In Target
If Not IsEmpty(cell.Value) Then
cell.Value = UCase(cell.Value)
End If
Next cell
Application.EnableEvents = True
End Sub
,或者如果你想限制這種運行到只有1次小區變更,更換對於每個循環與If Target.rows.count = 1 AND Target.columns.count = 1....
有趣的是,該代碼在Excel停止前工作... –
您是否將enableEvents設置爲false?另外,它會再次自我觸發(或任何其他eventHandler)。 – CaBieberach