VBA EXCEL 2013:Workbook_SheetChange没有启动

时间:2015-07-20 11:04:42

标签: excel excel-vba events vba

我的电子表格根据第一个标签中的表格内容添加并格式化一系列标签。之后,我在Workbook_SheetChange事件中设置了一些代码,观察这些选项卡中的一些更改。 这是ThisWorkBook中的代码:

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim test As String
Dim itm As Range
Dim tbl As ListObject
Dim switcher As Integer
On Error GoTo RefErr:
    If Target.Cells(1, 1) = "" Then switcher = 0
    If Target.Cells(1, 1) = Range("Setup!B1") Then switcher = 1
    If Target.Cells(1, 1) = Range("B4") And (sh.CodeName Like "Sheet*") And isMatch(sh.name) Then switcher = 2
    If Target.Column = 9 And (sh.CodeName Like "Sheet*") And Target.Row <> 1 Then switcher = 3
    Select Case switcher
        Case 0
            GoTo ExitSub
        'Rename Tab
        Case 1
            Card.name = Left(Target, 31)
        'Change Tab Color
        Case 2
            sh.Tab.ColorIndex = Target.DisplayFormat.Interior.ColorIndex
        'Update Verdict
        Case 3
            Set tbl = sh.ListObjects("TC_" & sh.name)
            If tbl.ListColumns(6).DataBodyRange.Count <> 0 Then
                For i = 1 To tbl.ListColumns(6).DataBodyRange.Count
                Set bla = tbl.ListColumns(6).DataBodyRange.Item(i)
                    If bla <> "" Then
                        If bla <> "Pass" Then
                            sh.Cells(4, 2).FormulaR1C1 = tbl.ListColumns(6).DataBodyRange.Item(i)
                            GoTo ExitSub
                        Else
                            sh.Cells(4, 2).FormulaR1C1 = "Pass"
                        End If
                    End If
                Next i
            End If
        Case Else
            GoTo ExitSub
    End Select
ExitSub:
    Application.EnableEvents = True
    Exit Sub
RefErr:
    MsgBox ("Error: " & vbCrLf & Err.Description & vbCrLf & Err.Number)
    Resume ExitSub
    Resume
End Sub

案例1引用了设置表,没有问题 案例2引用动态创建的选项卡并更改选项卡的颜色,这很好用 案例3读取在动态选项卡中创建的表对象的列,并根据在该列中找到的内容更改特定单元格中的值。 这是奇怪的事情。当创建,访问选项卡并在所述列中更改值时,案例3永远不会被触发,不显示任何错误,没有 但是一旦我打开VB编辑器,它就可以了!没有错误,没有消息,只是事件触发它应该 逐行调试时,根本不会出现任何问题。 我承认这令我感到困惑。我已经尝试在我的工作簿的每个可能和不太可能的部分设置Application.EnableEvents = true,并没有改变。

拜托,我想听听你对此的看法。我很确定在事件触发顺序或其他地方发生了某些冲突,但我无从得知。如果你们向我解释它是如何完成的,我很乐意在这个问题上添加表格。

非常感谢 P

PD:我在Excel 2007和2010上测试了我的代码,它具有完全相同的奇怪行为(其他一切工作正常)。

0 个答案:

没有答案