从下拉列表更改工作表时VBA崩溃

时间:2011-01-08 18:09:48

标签: excel vba excel-vba

我有一个关联宏的下拉列表,如下所示:

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发送报告。任何想法如何重写这样它不会崩溃,或者它是一个Excel错误?

1 个答案:

答案 0 :(得分:1)

圣杜斯,

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

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