2015-08-18 26 views
-1

因此,根據條件,我的「ChangeDate」值可能會顯示#Value。所以當這種情況發生時,用戶點擊校準按鈕,我想要顯示一條錯誤消息。爲什麼我的代碼不工作?在GoalSeek代碼運行之前我必須做些什麼嗎?根據錯誤類型在我的宏中設置自定義消息

 Sub CIGSCalib() 

     Set Targetdate = Range("Update_CIGS_TargetDate") 
     Set TargetCIGS = Range("Update_CIGS_TargetValue") 
     Set ChangeDate = Range("Calib_CIGS_DV") 

     Sheets("profiles and sequencing").Activate 

     Range("A1").Offset(Targetdate - 1, 3).GoalSeek _ 
      Goal:=TargetCIGS, _ 
      ChangingCell:=Range("A1").Offset(ChangeDate - 1, 2) 

     Sheets("Inputs").Activate 

     On Error GoTo ErrMSg 
     Exit Sub 
     ErrMSg: 
     MsgBox ("No Calibration Needed") 

編輯:我忘了提,當CHANGEDATE =#VALUE我得到這個錯誤代碼「運行時間13類型不匹配」,並在GoalSeek代碼段彈出

+0

在errmsg標籤之前放置一個退出子集。 – Tarik

+0

不錯,但仍然在GoalSeek部分炸彈:( –

+0

嘗試範圍(「Calib_CIGS_DV」)。值 – Tarik

回答

3
On Error GoTo ErrMSg 

需求在錯誤發生之前聲明,所以將它放在你的集合和變暗之後

+1

我會在子/函數的開頭放置'on error'語句,以確保;) – Barranka

+0

這也很好,只是我的練習,我喜歡把dims/sub放在一開始,也許這不是一個好習慣? – Alex

+0

如果你把'on error'語句放在子/函數的開頭,你會看到代碼引發的所有*錯誤。如果你的代碼有多種類型的錯誤,你應該編寫你的錯誤處理程序來分別處理每個錯誤代碼(也許使用'select case'語句)。這只是一個偏好問題。如果你把'on error'放在容易產生錯誤的那一行的上面,你將不會發現它之前產生的任何錯誤。 – Barranka

相關問題