• Q.

    If文で

    If 値 = True Then

    と書いたり

    If 値 Then

    と書いたりしているのを見ますが何が違うのでしょうか?

  • A.

    値のデータ型がブール型(Boolean型とかBOOL型)であれば結果は同じです。
    その他のデータ型である場合は条件によって結果が異なります。

  • 解説

    If文は真偽の判定を行います。
    真である場合Then以降の文を実行し、偽である場合Else以降の分を実行します。
    (言語によっては書き方に若干違いがあります)

    ※真偽とは

    真・・・0以外
    偽・・・0

    下記の文を例に解説します。

    If 値 = True Then ・・・ (1)

    If 値 Then ・・・・・・・・・ (2)

    値がブール型で内容がTrueである場合は、同じ結果を返します。

    (1)は値がTrueと一致しているので真になります。
    (2)は値が0以外であるので真になります。

    値が整数型であり内容が10であった場合は、違う結果を返します。

    (1)は値がTrueとは一致しないので偽になります。
    (2)は値が0以外であるので真になります。

    ちなみにVBAでは(他言語では検証していません)(1)(2)の実行速度を比較すると(2)の方が若干速いです。
    (速いといっても人が感じるほどの速さではありません)
    (1)はまず値がTrueであるかの判定がありますので(2)より1回判定が多いのが理由です。

    下記のテストコードで実験できます。言語はVBAです。シングルクォーテーションの位置を変えて実行してください。

    Public Function Test() As Boolean
    
        Dim StartTime As Single
        Dim i As Long
        Dim 値 As Boolean
    
        値 = True
    
        StartTime = Timer
    
        For i = 0 To 10000000
            If 値 = True Then
    '        If 値 Then
            End If
        Next i
    
        Debug.Print Timer - StartTime
    
    End Function
    

    ※データ型がLong型である場合は、なぜか値判定を行ったほうが速いです。

説明がわからないなどありましたらお問い合わせでお知らせください。

ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者である雅は一切責任を負いません。