从下拉菜单更改工作表时,VBA崩溃

我有一个关联macros的下拉菜单,如下所示:

Sub Drop() If Range("Hidden1!A1") = "1" Then Sheets("Sheet1").Select End If If Range("Hidden1!A1") = "2" Then Sheets("Sheet2").Select End If If Range("Hidden1!A1") = "3" Then Sheets("Sheet3").Select End If End Sub 

这使得我的Excel 2010完全崩溃,并希望向Microsoft发送报告。 任何ide如何重写这个,所以它不会崩溃,或者它是一个Excel错误?

圣杜斯,

正如你所描述的,我能够重现这个问题。 在子的开头添加一个DoEvents命令修复它。 使用它们所属的工作簿(如ThisWorkbook.Sheets(1).Range(“A1”))来限定工作表名称和范围也是一个好主意。 另外,你并不需要所有那些如果Endif语句(如果你真的需要一个长的If,ElseIf,Elseif,End)。 无论如何,你可以忽略这些评论,只是把DoEvents的开始,它应该工作:

 Sub Drop() DoEvents With ThisWorkbook .Worksheets("Sheet" & .Worksheets("Hidden1").Range("A1")).Select End With End Sub