制作excel图表出现/消失

时间:2013-08-26 10:05:39

标签: excel vba excel-vba if-statement graph

我希望仅在条件满足时显示图表。更确切地说:我有一个下拉菜单,可以更改图表的内容。如果单击菜单项“总收入”,我希望显示第二个图表。我是VBA的新手,这是我到目前为止所提出的:

Sub Iffuntion()
Dim SelectedChart As Range
Dim notVisible As Boolean
If Range("D100").Value = Range("E100").Value Then
ActiveSheet.ChartObjects("Testchart").Visible = True
Else
ActiveSheet.ChartObjects("Testchart").Visible = notVisible
End If
End Sub

它可以工作,但是我必须执行VBA才能让图表显示/消失,我希望这会自动发生。此外,条件最终应该在另一个工作表中,以使图表保持良好和整洁。我读到要实现这一点,我必须激活其他工作表。你会推荐这种方式还是有更好的解决方案?

感谢您的帮助和最好的问候! 皮特

编辑:这是带有Cor_Blimey建议解决方案的示例文件的链接,我无法正常工作。 excel中的互连比它们本来要复杂得多,但我希望尽可能准确地展示我的Excel中实际发生的事情。谢谢你看看!

https://dl.dropboxusercontent.com/u/18406645/sample.xlsm

1 个答案:

答案 0 :(得分:0)

假设您的意思是他们从数据验证下拉列表中更改了单元格的内容,那么您可以将代码放入Worksheet的Worksheet_Change事件中。当用户更改单元格的内容(或通过外部链接)时会触发此事件。

然后测试正确单元格的单元格,然后运行代码。

像:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Intersect(Target, Me.Range("D100"))
    If Not rng Is Nothing Then
        If rng.Value = Me.Range("E100").Value Then
            Me.ChartObjects("Testchart").Visible = True
        Else
            Me.ChartObjects("Testchart").Visible = False
        End If
    End If
End Sub