|
はじめて質問させていただきます。
検索サイト等でいろいろと調べてみたのですが、方法が分からなかった為、
質問させていただきます。
掲示板の基本方針にのっとった形で質問させていただきます。
1.「何がしたいのか」
Excel(2000)において、シートから別のシートのPublic関数内のエラーをトラップし、
Errオブジェクトからメッセージを取得したい。
2.「何をやったか」
Sheet1で On Error Goto によるエラーとラップを記述し、Sheet2のPublic関数を呼び出します。
呼び出し先の関数内で Err.Raise して、Sheet1でトラップしたエラーのメッセージを取得します。
メッセージは Err.Description から取得していますが、設定値した文字列とは違う
文字列(「アプリケーション定義またはオブジェクト定義のエラーです。」)になってしまいます。
ソースは以下のとおりです。
----------------------------------------------------
<Sheet1>
Public Sub test()
On Error GoTo ERR_ROUTINE
Call Sheet2.testSub
Exit Sub
ERR_ROUTINE:
Debug.Print Err.Description
End Sub
<Sheet2>
Public Sub testSub()
Call Err.Raise(10003, , "test1")
End Sub
----------------------------------------------------
※補足
エラーメッセージを Err.Description ではなく、グローバル変数や関数の引数等を使って受け取ることで、
同様の目的を果たせるとは思いますが、既存のソースにあわせる意味で上記方法で実現したいと考えています。
上記現象がExcelVBAの仕様であれば諦めもつくのですが、そのようなドキュメントを発見できませんでした。
Sheet2のソースを標準モジュールやクラスモジュールのPublicメソッドとして定義した場合は、
同様にエラーをトラップしても、Err.Description から "test1" が取得できます。
以上 ご助言の程、宜しくお願いいたします。
|
|