除非我点击播放按钮,否则VBA excel不会运行

Leo*_*123 2 excel vba

我不知道我哪里出错了.脚本可以工作,但它不会自动运行,除非我进入VBA应用程序并单击脚本运行的播放按钮.有人可以帮忙吗?

Private Sub HideChart1()

    If ActiveWorkbook.Sheets("User Interface").Range("F8") = "Yes" Then

        ActiveWorkbook.Sheets("Sheet1").ChartObjects("Chart 6").Visible = True

    Else

        ActiveWorkbook.Sheets("Sheet1").ChartObjects("Chart 6").Visible = False

    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

Mat*_*don 5

处理SheetChange,并在那里打电话给你的程序.

Private Sub Worksheet_Change(ByVal Target As Range)
    HideChart1
End Sub
Run Code Online (Sandbox Code Playgroud)

完成.不要在事件处理程序中实现逻辑,它是第一个地狱门和spaghettification.对它进行单独的专用程序是完美的 - 您只需要自动调用它.

如果HideChart1在自己的标准模块中实现,则需要使其Public能够从工作表的代码隐藏中调用它; 添加Option Private Module到该模块的顶部以避免将成员公开为宏和/或工作表函数.

  • @BruceWayne只是因为最佳实践是在自己的功能中实现事物.哪个代码更容易编写自动单元测试?在专用类模块中实现的专用方法,还是通过修改特定工作表单元而触发的私有的do-it-all事件处理程序?即使你永远不打算在VBA中编写单元测试(虽然[你可以](http://www.rubberduckvba.com)),如果代码没有分散在处理程序中,代码也更容易维护. (2认同)