tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。