Excel VBA-选择图表A的系列1时,使图表B显示

Excel VBA-选择图表A的系列1时,使图表B显示,excel,vba,charts,Excel,Vba,Charts,我有一张14系列的图表。同样地,我有14个图表与这些系列中的每一个相关。我正在尝试创建一个宏,在选择特定系列时可以调用该宏。选择序列后,宏将显示相应的图表,从而为用户提供更详细的数据 这就是我到目前为止所想到的(请相信我,我是一个软弱的程序员)。请让我知道我是否在正确的轨道上,如果不是,请给我一些方向。此代码当前给我一条错误消息“对象不支持此属性或方法” 谢谢 Sub Macro1() Dim Series6 As Object Set Series6 = ActiveChart.Series

我有一张14系列的图表。同样地,我有14个图表与这些系列中的每一个相关。我正在尝试创建一个宏,在选择特定系列时可以调用该宏。选择序列后,宏将显示相应的图表,从而为用户提供更详细的数据

这就是我到目前为止所想到的(请相信我,我是一个软弱的程序员)。请让我知道我是否在正确的轨道上,如果不是,请给我一些方向。此代码当前给我一条错误消息“对象不支持此属性或方法”

谢谢

Sub Macro1()

Dim Series6 As Object
Set Series6 = ActiveChart.SeriesCollection(1).Points(6)

   If Series6.Select Then
   Sheets("Sheet1").ChartObjects("Chart 2").Visible = True
   End If
End Sub

您可以创建图表事件来处理此类事件

假设:

  • 图表见
    表1
  • 主图表命名为
    图表1
  • 详细图表以系列编号+1命名(例如
    系列1
    图表2
    相关)
要设置图表事件,请执行以下步骤

  • 创建名为
    EventClassModule
  • 将代码添加到此模块

    Option Explicit
    
    Public WithEvents myChartClass As Chart
    
    Private Sub myChartClass_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
        Dim ChartName As String
        Dim i As Long
        If ElementID = 3 And Arg1 = 1 Then ' 3 indicates a Series
            ChartName = "Chart " & Arg2 + 1 ' Arg1 is the series number
            With Worksheets("Sheet1")
                ' Hide all sub charts
                For i = 2 To .ChartObjects.Count
                    .ChartObjects(i).Visible = False
                Next
                ' Show the required chart
                .ChartObjects(ChartName).Visible = True
            End With
        End If
    End Sub
    
  • 初始化类模块(最好作为工作簿打开事件完成:将此代码放入
    此工作簿
    模块)

  • 现在,当选择图表1上的系列时,将显示相关的详细信息图表,并隐藏其他图表

    有用的链接


    是否将所有图表放在一张纸上?如果您尝试这样做会怎么样:
    工作表(“质量报告”).Chartobjects(“图表7”).Visible=true
    但在括号中插入正确的名称。是的,它们都在同一页上。但是,我仍然得到相同的错误。你是否在引号内添加了适当的图表名称?是的,但它不起作用。我可以用上面代码的一部分取消隐藏图表,但当选中图表上的特定数据点时,我无法确定如何执行此操作。我想知道这是否可能?我已经编辑了我发布的原始代码。我现在正在一个测试文件中工作。以上仍然会产生一个错误,但我相信我离做我想做的事情更近了。如果您有任何意见,请插进来。非常感谢!这似乎正是我试图实现的。我还有一个问题……如果我只想拥有一个系列,但我想为各个数据点提供相同的功能(单击时会显示相应的图表),我将如何实现这一点。我知道ElementID=3指的是系列,Arg2指的是数据点,但我不确定如何将其转换为可行的代码。我不清楚您想要实现什么:您能否指定系列和点击的点编号之间的关系以及您想要显示的内容?很抱歉,不清楚。我想实现的是,当单击系列1的数据点1时,会出现图表2,当单击系列1的数据点2时,会出现图表3等。我希望这更清楚一点。在我最初的帖子中,我错误地说我希望在选择不同系列时显示隐藏的图表。我想说的不是这个系列,而是数据点。更新后的帖子反映了最新的要求
    Option Explicit
    
    Dim myClassModule As New EventClassModule
    
    Private Sub Workbook_Open()
        Set myClassModule.myChartClass = _
            Sheet1.ChartObjects("Chart 1").Chart
    End Sub