图表事件 – 激活工作表

我使用以下代码来识别图表的每个部分何时被选中,然后链接到一个不同的工作表:

Option Explicit Public WithEvents CHT As Chart Private Sub Workbook_Open() Set CHT = ActiveSheet.ChartObjects(1).Chart End Sub Private Sub CHT_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long) On Error GoTo Fin If Range("A1") = "Product" Then If Selection.Name = Range("J29").Value Then Application.Goto ActiveWorkbook.Sheets(Range("J29") & "P").Range("A1") End If If Selection.Name = Range("J30").Value Then Application.Goto ActiveWorkbook.Sheets(Range("J30") & "P").Range("A1") End If End If If Range("A1") = "Country" Then If Selection.Name = Range("J29").Value Then Application.Goto ActiveWorkbook.Sheets(Range("J29") & "C").Range("A1") End If If Selection.Name = Range("J30").Value Then Application.Goto ActiveWorkbook.Sheets(Range("J30") & "C").Range("A1") End If End If Fin: End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If CHT Is Nothing Then Set CHT = ActiveSheet.ChartObjects(1).Chart End If End Sub 

但是,这只适用于在工作簿的第一个工作表中select任何图表分段并不能识别其他工作表中的任何图表分段的select。 如何启用此function以适用于所有工作表? 我以为问题可能是GoTo命令不激活链接的工作表,因此试图添加下面的代码:

 If Selection.Name = Range("J29").Value Then Application.Goto ActiveWorkbook.Sheets(Range("J29") & "P").Range("A1") ActiveSheet.Activate End If 

不幸的是,这似乎也不工作。 有任何想法吗?

尝试使用Workbook_SheetActivate事件而不是SheetSelectionChange事件:

 Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.ChartObjects.Count > 0 Then Set CHT = Sh.ChartObjects(1).Chart End Sub