2011-01-08 93 views
2

改變工作表時,我必須與相關的宏下拉列表中,它看起來像: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的報告。任何如何重寫這個IDE,以便它不會崩潰,或者它是一個Excel錯誤?

回答

1

sandos,

我能夠按照您所描述的重現問題。在子的開頭添加一個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