希望这个问题还没有被问到,我试着找一个答案而找不到任何东西。
这可能是一个简单的问题,但是我在excel中编写我的第一个宏,并且遇到了一个我无法找到解决方案的问题。我写了几个宏,基本上根据同一行的另一列中的值动态地总结列(以便行数可以更改,公式自动向下移动),我从事件{{调用这些宏1}}。
我遇到的问题是,我从宏中更改单元格的值以显示总和的结果,然后再次调用Workbook_SheetChange
,这是我不想要的。现在它可以工作,但我可以跟踪它,并看到多次调用Workbook_SheetChange
。这阻止了我向宏添加其他单元格更改,因为它会导致无限循环。
我希望每次对工作表进行更改时都会运行宏,但我没有看到任何方法允许宏更改单元格的值,所以我不知道该怎么做。我会在下面粘贴我的代码,以防有用。
Workbook_SheetChange
感谢您给我的任何帮助!我真的很感激。
答案 0 :(得分:5)
使用Application.EnableEvents
阻止Excel调用事件过程。
穿戴
代码开头的Application.ScreenUpdating = False
最后是Application.ScreenUpdating = True
。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Dim Row As Long
Dim Col As Long
Row = Target.Row
Col = Target.Column
If Col <> 7 Then
Range("G" & Row).Select
Selection.Formula = "=IF(F" & Row & "=""Win"",E" & Row & ",IF(F" & Row & "=""Loss"",-D" & Row & ",0))"
Target.Select
End If
Call SumRiskColumn
Application.EnableEvents = True
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Application.EnableEvents = False
Call SumOutcomeColumn
Application.EnableEvents = True
End Sub