我有一个包含7个不同Form Control下拉列表的项目(不在excel用户表单中),每个下拉列表都绑定到一个宏并触发各种单元格以不同方式填充或计算,其中3个下拉列表依赖于另一个下拉列表 . 工作表的设计是为了从头到尾按顺序选择下拉列表以使最终结果有效,但我正在尝试构建一个“计算”按钮,该按钮将通过并验证所有内容是否正确计算出来 .

基本上我希望计算按钮作为保险,以防有人回去并在填写剩余的下拉列表后在第一个下拉列表中选择了不同的选项,因为这会导致后续计算不正确 . 我认为最简单的方法是将计算按钮分配给宏,如:

Sub CalculateButton_Click()
    Call DropDown1_Change
    Call DropDown2_Change
    Call DropDown3_Change
    Call DropDown4_Change
    Call DropDown5_Change
    Call DropDown6_Change
    Call DropDown7_Change
End Sub

但我遇到一个“无法获取Worksheet类的DropDowns属性”错误运行时它停在:

Select Case ActiveSheet.DropDowns(Application.Caller).Value

我的DropDown宏的行 . 我假设这是因为当单击下拉选项并按顺序运行所有宏时,Application.Caller函数将被触发一次 . 我尝试将错误行切换到

Select Case ActiveSheet.Shapes("DropDown1").Value

但我得到的方法不支持错误 . 有没有更好的方法来解决这个问题,还是我运气不好?