質問

Access で新しい VBA プロシージャを作成する手順に従っています。仕様の 1 つは、標準の ExitProc-Error 処理を使用することです。それが何を意味するのか少し混乱しましたが、オンラインの例と、テンプレートとして提供されている以前に完成した例を見て、次のことを思いつきました。

On Error GoTo HandleError
'code that may cause errors

ExitProc:
Exit Function
HandleError:
If FindFolders = False Then
    MsgBox ("Required folders for " & InstrumentName & " not found")
ElseIf FindFolderPaths = False Then
    MsgBox ("Required folder paths for " & InstrumentName & " not found")
End If

MsgBox Err.Number & " " & Err.Description & " in FindFolderPaths"
Resume ExitProc
End Function

findfolders はエラーを示すためにプロシージャ内で false としてマークしたブール変数で、FindFolderPaths はパスが見つかったかどうかを示すために使用しているプロシージャの名前です。この手順を実行すると、次のメッセージ ボックスが表示されます。エラーがどのように処理されるかを示すために、フォルダー名にエラーを作成しました。

-ICPMSに必要なフォルダーが見つかりません

FindFolderPaths の -0

-ICPMSに必要なフォルダーが見つかりません

-20 FindFolderPaths でエラーなしで再開

プロシージャを段階的に実行すると、ExitProc に進む前に HandleError を 2 回ループしているように見えますが、その理由がわかりません。また、HandleError の 2 番目のループ中にエラー メッセージが変わりますが、これは奇妙です。

役に立ちましたか?

解決

あなたの問題は、コード内で直接呼び出してエラーハンドラーを「誤って使用している」ことのようです。 Goto HandleError エラーが発生したときに自動的に呼び出される代わりに。

これは、コードの実行時にレポートに出力された内容を正確に説明します。

-Required folders for ICPMS not found  'shows regardless of what triggers the handler
-0 in FindFolderPaths                  'err number of zero means there's no error

Resume Exit Proc その後、 実際の エラー、コードの 2 回目の呼び出し

-Required folders for ICPMS not found        'not relevant here...
-20 Resume without Error in FindFolderPaths  'an actual error number and message

通常、テストできる何らかの条件 (フォルダーが見つからないなど) がある場合、エラー ハンドラーを呼び出してそれを処理する必要はありません。「通常の」コードからメッセージを表示してから、 Exit function. 。または、次を使用してカスタム エラーを発生させます。 Err.Raise, 、エラー ハンドラーでテストして適切に処理できる特定のエラー番号と説明が与えられます。

http://msdn.microsoft.com/en-us/library/office/aa164019(v=office.10).aspx#odc_tentipsvba_topic3

他のヒント

Remume Remove ExitProcを削除します。コードは終了機能に当たったときに機能を残します。また、MSGBOXを呼び出しているときは、括弧を削除する必要があります。MSGBOXに等しいものを設定しているときにのみ括弧を使用してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top