2012-03-22 9 views
2

ピボットテーブルをセットアップするGUIを作成しました。VBAがエラーを検出し、エラーメッセージを表示せずにデータを利用できないというプロンプトを表示することは可能ですか?

たとえば、button1をクリックすると、ピボットテーブルが実行され、セットアップされます。

button3をクリックすると、データに値がないため、run time error 1004が表示されます。それで、VBAにそのエラーを受け入れ、そのデータが利用できないというプロンプトを表示させることは可能ですか?ところで

enter image description here

、私は、この設定に

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

ピボットテーブルを使用しています。

3つの異なる変数があります。 データ1,データ2,データ3データ3が利用できない場合は、エラーが表示されますが、利用できないことを示すプロンプトが表示されます。どうすればいいのか分かりますか?ありがとうございました!

答えて

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

+0

こんにちは、私は、エラーが検出された後にコードの継続があるのだろうと思っていた。つまり、エラーを検出した後も引き続き実行したいと考えています。それは可能ですか? – user1204868

+0

はい、可能ですがお勧めできません。次のコードがその特定の行に依存する場合はどうなりますか?その行が失敗すると、一連のエラーが発生します。 –

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:何らかの理由でエラーが発生する可能性があるので、私はそれをお勧めしません。たとえば、ピボット可能な "PivotTable1"またはPivotField "Test"がない場合はどうなりますか?適切なエラーメッセージを表示する代わりに、「データが利用できません」というエラーが表示されます。私はあなたに言うOERNは悪魔です! LOL –

+1

確かに、私は明示的に書いているように、OPは 'Err <> 0'ではなく特定のエラー番号(および/または説明)を確認できます。 OPは、 "データが利用できません"というメッセージボックスを求めました。 「Exit Sub」*は次のステップでなければならないと誰が言いますか?たぶん彼は別の支店に沿って執行を続けたいと思うかもしれません。 –

+0

こんにちは、msgboxは期待どおりに表示されませんでした。 – user1204868

関連する問題