您可能已经设置了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