我有一个SSIS软件包,该软件包每天晚上运行,它为我的用户生成一个Excel文件。一位用户要求我在一个工作表选项卡中合并一个Worksheet.Change事件,以便他可以跟踪自己所做的任何更改。
如何在通宵生成Excel文件期间禁用Worksheet.Change事件,然后为用户重新启用它?
我尝试将以下行添加到Worksheet.Change事件:
If Range("B6").Value = "X" Then Exit Sub
然后,我的用户通过按Excel文件中的按钮删除B6中的“ X”来运行宏,然后将其突出显示为高亮显示的单元格。
这是我添加到工作表标签中的更改事件
Public Sub Worksheet_Change(ByVal Target As Range)
If Range("B6").Value = "X" Then Exit Sub
Target.Interior.ColorIndex = 27
End Sub
这是VBA宏的一部分,当我的用户单击Excel中的“宏”按钮时,该宏就会运行。
Sub clearCell()
'Activates Sub Worksheet_Change in the Data tab by removing the X in B6
'declare object variable to hold reference to cells to clear
Dim myRange As Range
'identify cells to clear
Set myRange = ThisWorkbook.Worksheets("Data").Range("B6")
'clear cells (including formatting)
myRange.Clear
End Sub
由于任何原因,我的VBA无法正常工作。我尝试在工作表标签中进行更改,但没有应有的突出显示。我希望由于B6中清除了“ X”,因此将突出显示对工作表的任何更改。
答案 0 :(得分:1)
更改单元格以停止更改事件可能会导致某些不良影响。如果将状态存储在工作簿之外,则表示安全。
如果您这样测试:
Public Sub Worksheet_Change(ByVal Target As Range)
If GetSetting("YourApplicationName", "Updates", "LoggingEnabled", "1") = "1" Then
...
End If
End Sub
并以此设置标志:
SaveSetting "YourApplicationName", "Updates", "LoggingEnabled", "0"
您在工作簿外部的注册表中拥有该标志。
当然-在尝试执行此操作之前,您必须使事件正常运行(没有标志)。
另外,重命名其中的YourApplicationName
部分。