【问题标题】:VBA crash when changing worksheet from dropdown从下拉列表更改工作表时 VBA 崩溃
【发布时间】:2011-01-09 14:03:03
【问题描述】:

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

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    桑多斯,

    我能够重现您所描述的问题。在 sub 的开头添加 DoEvents 命令修复了它。使用它们所属的工作簿来限定工作表名称和范围也是一个好主意,例如 ThisWorkbook.Sheets(1).Range("A1")。此外,您实际上并不需要所有这些 If Endif 语句(如果您需要一个长 If、ElseIf、Elseif、End)。无论如何,您可以忽略这些 cmets 并将 DoEvents 放在开头,它应该可以工作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      相关资源
      最近更新 更多