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

标签 vba excel

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

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 错误?

最佳答案

桑多斯,

如您所述,我能够重现该问题。在 sub 的开头添加 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

关于从下拉列表更改工作表时 VBA 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635339/

相关文章:

vba - 错误 16 : Expression Too Complex - Nested Select Case

Excel VBA将word数据导入excel

vba - Excel VBA 数组循环故障排除 : Using Redim and UBound, 一维和二维数组

excel - INDEX 函数内部的 INDIRECT 给出 #REF 错误

VBA隐藏列如果

java - 使用poi获取Excel中的单元格颜色

c# - 将数据表导出到多个 Excel 工作表中

VBA - 设置 .DisplayAlerts = False 时需要对象错误

excel - 如何使用 INDEX/MATCH 找到正确的矩阵

excel - VBA Excel - 使用 AddItem 时将标题添加到组合框