Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


22446 / 76732 ←次へ | 前へ→

【59668】Re:定義済の関数は使えない?(引き続き質問させてください。)
発言  かみちゃん E-MAIL  - 08/12/30(火) 23:39 -

引用なし
パスワード
   こんにちは。かみちゃん です。

▼甘木 さん:
>コードの短さという点からは、かみちゃんさんのご指摘のとおりです。
>
>関連してエラー対応という観点からいくつかメモしておきます。
>1.まず、On Error Resume Next の意味を理解してください。
> エラーが発生してもそれにかまわず(止まらず)次の行に制御を
> 進めるというステートメントです。既にご存知かもしれませんが。
>
>2. On Error Resume Next
>  はむやみに使わず、なおかつ、できるだけ最小限の範囲で使い、
>  On Error GoTo 0
>でできるだけ早い時点で元に戻す習慣をつけておいてください。
>宣言しっぱなしにしておくと、意図しない部分でのエラーを隠蔽してしまいますから。プロシージャーから抜けると元に戻りはしますが、明示的に書いたほうが
>良いと個人的には思います。(異なる意見も有り得ます。)
>
>3. またエラー部分の判定は
>  If return_val Is Nothing Then は NG
>  If return_val = "" Then    は OK
>であることも注意しておいてください。

いろいろとメモを書かれているのですが、
 Dim return_val
という宣言をしているのであれば、
 On Error Resume Next
 On Error GoTo 0
でエラートラップをしているのには、違和感があります。

エラーが発生したときは、
 return_val
には、エラー値が格納されることを利用すればいいので、

> On Error Resume Next
> はむやみに使わず、なおかつ、できるだけ最小限の範囲で使い

と言う観点では、今回の場合は、使わないほうがいいということになります。

Function time_to_data1(Id As Integer, Data_Range As Range, Line As Integer)
 Dim return_val

 return_val = Application.VLookup(Id, Data_Range, Line, False)

 If IsError(return_val) Then
  time_to_data1 = 0
 Else
  time_to_data1 = return_val
 End If
End Function

 Dim return_val
は、
 Dim return_val As Variant
と宣言しているのと同じですが、
 Application.VLookup
などと、記述する場合に、エラー値が得られるので、それで分岐するときには
重宝すると思います。

以上、余計なコメントとは思いましたが、気になりましたので、書かせていただきました。

5 hits

【59657】こういうユーザー定義関数(Function)は作れますか? nagao 08/12/30(火) 3:28 質問
【59658】Re:こういうユーザー定義関数(Function)は... 甘木 08/12/30(火) 6:27 回答
【59659】Re:こういうユーザー定義関数(Function)は... nagao 08/12/30(火) 9:02 お礼
【59660】Re:こういうユーザー定義関数(Function)は... 甘木 08/12/30(火) 9:44 発言
【59661】定義済の関数は使えない?(引き続き質問さ... nagao 08/12/30(火) 15:42 質問
【59662】Re:定義済の関数は使えない?(引き続き質問... かみちゃん 08/12/30(火) 15:48 発言
【59663】Re:定義済の関数は使えない?(引き続き質問... nagao 08/12/30(火) 17:38 お礼
【59664】Re:定義済の関数は使えない?(引き続き質問... SS 08/12/30(火) 18:20 発言
【59665】Re:定義済の関数は使えない?(引き続き質問... 甘木 08/12/30(火) 22:46 回答
【59666】Re:定義済の関数は使えない?(引き続き質問... かみちゃん 08/12/30(火) 22:57 発言
【59667】Re:定義済の関数は使えない?(引き続き質問... 甘木 08/12/30(火) 23:28 発言
【59668】Re:定義済の関数は使えない?(引き続き質問... かみちゃん 08/12/30(火) 23:39 発言
【59669】Re:定義済の関数は使えない?(引き続き質問... 甘木 08/12/30(火) 23:58 発言
【59670】Re:定義済の関数は使えない?(引き続き質問... かみちゃん 08/12/31(水) 0:04 発言
【59671】Re:定義済の関数は使えない?(引き続き質問... 甘木 08/12/31(水) 1:24 発言
【59672】Re:定義済の関数は使えない?(引き続き質問... かみちゃん 08/12/31(水) 10:50 発言
【59673】「#NUM!」が出る? nagao 08/12/31(水) 10:55 質問
【59674】Re:「#NUM!」が出る? かみちゃん 08/12/31(水) 11:09 発言
【59675】Re:「#NUM!」が出る? ぱくぱく名無しさん 08/12/31(水) 11:14 発言
【59676】Re:「#NUM!」が出る? nagao 08/12/31(水) 11:37 お礼
【59678】Re:「#NUM!」が出る? かみちゃん 08/12/31(水) 11:39 発言
【59679】Re:「#NUM!」が出る? nagao 08/12/31(水) 11:59 お礼
【59686】Re:「#NUM!」が出る? ぱくぱく名無しさん 09/1/2(金) 13:34 発言
【59677】Re:「#NUM!」が出る? かみちゃん 08/12/31(水) 11:37 発言

22446 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free