|
▼小川 さん:
こんばんは。
>掲示板の基本方針にのっとった形で質問させていただきます。
「このように質問して下さい」と質問の仕方の良い例として、
どこかに掲載したいですねえ!!
>1.「何がしたいのか」
> Excel(2000)において、シートから別のシートのPublic関数内のエラーをトラップし、
> Errオブジェクトからメッセージを取得したい。
>
>2.「何をやったか」
> Sheet1で On Error Goto によるエラーとラップを記述し、Sheet2のPublic関数を呼び出します。
> 呼び出し先の関数内で Err.Raise して、Sheet1でトラップしたエラーのメッセージを取得します。
> メッセージは Err.Description から取得していますが、設定値した文字列とは違う
> 文字列(「アプリケーション定義またはオブジェクト定義のエラーです。」)になってしまいます。
本当ですねえ!!
Excel/VBAでは、ワークシートオブジェクトを扱うとき
Sheet1.Cells(1,1)というように
直接オブジェクトを指定せずにWorksheetsコレクションを通して
指定する事を推奨しています(MS社のMsdnのどこかで見ました)。
(なにやら、いろいろと不具合があるみたいです)
よって、これも
> ソースは以下のとおりです。
>
>----------------------------------------------------
><Sheet1>
>Public Sub test()
>On Error GoTo ERR_ROUTINE
>
Worksheets("Sheet2").testSub
'として、試してみて下さい
'因みに
'このtestsubがThisworkbookに置いたばあいも
' thisworkbook.testsubでは、駄目でした
' workbooks(thisworkbook.name).testsub 'はOKでした
>
>Exit Sub
>ERR_ROUTINE:
> Debug.Print Err.Description
>End Sub
>
> <Sheet2>
>Public Sub testSub()
> Call Err.Raise(10003, , "test1")
>End Sub
>
>----------------------------------------------------
試してみて下さい。
これは、目安箱に入れときたいね!!
|
|