VBATips

If flg Thenってどういう意味?Boolean型のフラグの判定条件【ExcelVBA】

If flg thenと記載のあるコードの意味

人が書いたコード(特にネットでコピペする場合等)、このコードの書き方って何?って思うケースがあります。

'(例)
Private Sub sample()
    Dim flg As Boolean: flg = True
    
    If flg Then
        MsgBox "フラグはTrueです"
    End If

End Sub

If flg thenはIf flg = True Then同様の動作

If flg then の書き方はRangeの.Valueが省略できるのと同様
Boolean型をIF文でTrue判定する場合は= True の部分を省略が可能です。
逆にBoolean型をIF文でFalse判定する場合はIf Not flg Then とする事で、= Falseを省略が可能です。

Private Sub sample()
    '(例)下記はBoolean型がTrueかどうか判定するコード分です。どちらも結果は同じです。
    Dim flg As Boolean: flg = True
    If flg Then Debug.Print "flgはTrueです"
    If flg = True Then Debug.Print "flgはTrueです"
    
    flg = False
    '(例)下記はBoolean型がFalseかどうか判定するコード分です。どちらも結果は同じです。
    If Not flg Then Debug.Print "flgはFalseです"
    If flg = False Then Debug.Print "flgはFalseです"
End Sub

注意点

  • =Trueをつけてもつけなくてもどちらでもいいです。
    大事なのは省略されても結果が一緒だという事を理解する事です。
  • 最初は誰もがコピペで見様見真似でコード作成します。正常動作後、コードを見直すのは大事です。
  • 上記がプログラマーの癖になるので、つけるならつける、つけないならつけないと統一すべきです。
    マクロはプログラム開発の敷居が低いです。その為、属人化しやすい事がデメリットです。
    上記部分をルールを決める事でチームの誰が見てもすぐわかるコードを書くべきです。

関連記事

.Valueは必要?不必要?省略しても良い?【ExcelVBA】

コメント

  1. 英語の文章を書ける人なら、コードも英語で読んでしまうと思うので、True/Falseを入れておきます。自分もそうします。

    • 私も同意見です。
      コードが長い=見づらいではないと思います。

      最適なコードを作っていきたいですね。

タイトルとURLをコピーしました