タイトル | : Re: iifでエラーになってしまう |
記事No | : 4060 |
投稿日 | : 2006/08/08(Tue) 15:51 |
投稿者 | : Blue |
おそらく、IIf関数ではすべての式を評価してしまうからでしょう。
簡単な例) Sub Test() Dim i As Integer i = IIf(Sample(1) = 1, Sample(2), Sample(3)) End Sub
Function Sample(ByVal i As Integer) As Integer Debug.Print i Sample = i End Function
この結果としては、iは 2 になるのですが、Sample(2)もSample(3)も実行しているというのが わかります。
よって、 > Str = IIf(IsDBNull(ObjRS.Fields("COL01").Value), _ > "", _ > Strings.Format(ObjRS.Fields("COL01").Value, "#,##0")) はすべての式を評価する、つまり IsDBNull(ObjRS.Fields("COL01").Value) でも Strings.Format(ObjRS.Fields("COL01").Value, "#,##0") をやってしまうということです。(結果は期待通りですが。)
なので、IIf文ではかけないんじゃないかなぁと思います。
ちなみに、C/C++やJavaの三項演算子は、全部評価するということはないです。 「三項演算子 VB IIf」等をキーワードに検索してみると同じような話題が見つかると思います。
|