タイトル : Re: iifでエラーになってしまう 投稿日 : 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」等をキーワードに検索してみると同じような話題が見つかると思います。 |