2012-03-22 61 views
2

我已經創建了一個GUI來設置數據透視表。VBA有可能檢測到錯誤並提示數據不可用而不是提供錯誤消息嗎?

例如,我點擊button1它將運行並設置數據透視表。

當我點擊button3時,它將有一個run time error 1004,因爲它沒有數據中的值。那麼是否有可能讓VBA接受該錯誤並顯示提示該數據不可用?

enter image description here

順便說一句,我使用這個

ActiveSheet.PivotTables("PivotTable1").PivotFields("Test").CurrentPage = "Data1"

設置數據透視表。

有3個不同的變量; Data1Data2Data3。如果Data3不可用,它會顯示錯誤,但我想提示它不可用。如果您知道如何操作,請與我分享!謝謝!

回答

5

是的。爲此你需要做適當的錯誤處理。看到這個示例代碼。

Sub Sample() 
    On Error GoTo Whoa 

    '<Your REST OF THE CODE> 

LetsContinue: 
    Exit Sub 
Whoa: 
    '~~> This gives the exact desription and the error number of the error 
    MsgBox "Description  : " & Err.Description & vbNewLine & _ 
      "Error Number : " & Err.Number 

    '~~> This part resumes the code without breaking it :) 
    Resume LetsContinue 
End Sub 
+0

謝謝希德! :) – user1204868 2012-03-22 08:59:41

+0

嗨sid,我想知道如果檢測到錯誤後有代碼的繼續。換句話說,即使在檢測到錯誤後,我也想繼續運行它。可以做到嗎? – user1204868 2012-03-23 06:23:08

+0

是的,這是可能的,但不建議。如果下面的代碼依賴於特定的行,該怎麼辦?如果該行失敗,那麼你會得到一系列的錯誤。 – 2012-03-23 08:20:48

1

我只是這樣做:

On Error Resume Next ' Don't stop execution when an error occurs. 
ActiveSheet.PivotTables("PivotTable1").PivotFields("Test").CurrentPage = "Data1" 

If Err.Number <> 0 Then ' Can also check for a specific error number instead 
    'Oops! An error occured. 
    MsgBox "Data isn't available." 
    Err.Clear 
End If 

On Error GoTo 0 ' Go back to stoping execution when an error occurs. 
+1

@JFC:我不會推薦它,因爲錯誤可能是任何原因。例如,如果沒有數據透視表「數據透視表1」或數據透視圖「測試」會怎麼樣。對於這些而不是顯示適當的錯誤消息,它會顯示「數據不可用」錯誤,這是錯誤的。我告訴你OERN是個魔鬼! LOL – 2012-03-22 08:45:37

+1

當然,但正如我明確寫到的,OP可以檢查特定的錯誤編號(和/或描述),而不是僅僅檢查「Err <> 0」。 OP僅要求提供一個消息框,指出「數據不可用」。我是誰說'Exit Sub' *必須是下一步?也許他想繼續沿着不同的分支執行,我不知道。 – 2012-03-22 09:15:32

+0

嗨,msgbox沒有像預期的那樣出現.. – user1204868 2012-03-23 08:12:42

相關問題