2016-12-14 46 views
0

我試圖使用代碼複選框添加到我的工作表「無法在中斷模式執行代碼」:添加控制到工作表使

Sub DropCheckboxOnSheet() 
    ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1" 
End Sub 

當我運行這段代碼,我得到一個複選框添加到工作表中,但是我也收到Excel「無法在分解模式下執行代碼」的消息。我知道我的代碼將一個對象添加到對象模型中,這就是它破壞的原因,但它也讓我有繼續的選擇。

如何在添加對象後告訴VBA繼續?

我試過的東西: 添加DisplayAlerts=False不起作用。 MSDN不提供任何幫助:https://msdn.microsoft.com/en-us/library/office/gg264133.aspx

+1

'On Error Resume Next'? – Jordan

+0

現在我覺得自己像個白癡。請將其作爲答案,以便我可以將其標記爲這樣。 – rohrl77

+2

該代碼不會導致VBA進入中斷模式。其他事情正在發生。 –

回答

1

我不確定這是否是最安全的解決方案,但您不會因爲添加「End」殺死所有宏而出現錯誤。我唯一真正使用它的時間就是進度條。我會更加努力地解決真正的問題,使用「On error resume next」是一個bandaid。如果確實使用它,請確保使用「出錯轉到0」來恢復您的默認錯誤處理。

Sub DropCheckboxOnSheet() 
    ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1" 
End 
End Sub 

例如,

Sub DropCheckboxOnSheet() 
On error resume next 
    ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1" 
On error goto 0 
End Sub 

更改子的名稱可能會解決您的問題。如果在另一個打開的工作簿中有相同的子項,則可能會拋出錯誤。

+0

我有一個新的工作簿中的代碼,沒有其他的東西。真是讓我困惑。我沒有嘗試過的一件事是錯誤恢復的邏輯。因爲約翰和約旦都沒有選擇回答我會接受你的答案。乾杯。 – rohrl77

+0

供參考:我剛剛測試了你的第一個聲明......只是結束......那個沒有奏效。我需要On Error Resume Next。 – rohrl77