我有一个关联宏的下拉列表,如下所示:
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错误?
答案 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