1-5.コードの記述ルール

今回はVBAコードを記述する上で、知っていると便利なルールを説明します。

コメントアウト

プログラムを作成する際、どのコードがどのような処理かといった説明文などを、コメントとして残しておきたい場合があります。

VBEに記述した文は、基本的にすべて処理構文として認識されてしまうので、コメントとして扱いたい文章はコメントアウトしておく必要があります。

コメントアウトしたい場合は、その文の先頭に‘(シングルクォーテーション)を付けます。

デフォルトでは、コメントアウトした文は、緑文字になります。

Sub コメントアウト()
    
    'この文はコメントアウトしています

    この文はコメントアウトしていません エラーになります
    
End Sub

改行

VBAでは、1つの処理を1行で記述する必要があります。

しかし、引数が多い場合やファイルパスが長い場合など、1行では文が長くなって画面に収まりきらない場合があります。

そのような場合は、改行したい箇所に“_”(アンダーバー)を付けることで、改行することができます。

なお、”_”(アンダーバー)を付ける箇所は、単語の区切りが良いところに付ける必要があります。
プロパティの単語の途中などに付けることはできません。

Sub 改行()
    
    '改行しない場合
    Workbooks(1).Worksheets(1).Cells(1, 1).Value = 1
    
    '改行した場合
    Workbooks(1).Worksheets(1).Cells(1, 1) _
    .Value = 1
    
End Sub

複数行を1行にまとめる

改行とは反対に、複数の短い文を1行にまとめたい場合があります。

そのような場合は、文と文の間に:(ダブルコロン)を付けることで、1行にまとめて記述することができます。

Sub 複数行を1行にまとめる()
    
    Cells(1, 1).Value = 1
    Cells(1, 2).Value = 2

    '上の2行を1行にまとめる
    Cells(1, 1).Value = 1: Cells(1, 2).Value = 2
    
End Sub

インデント

必須のルールではありませんが、インデントを付けた方がコードが読みやすい(可読性が高くなる)ので、適切にインデントを付けると良いです。

ただし、インデントを付けなくても、逆にめちゃくちゃに付けても、処理に影響はありません。

インデントはtabキーで付けることができます。

インデントを付ける場所としては、プロシージャ内、if文などの条件分岐処理、ForNext文などの反復処理、with文などいろいろあります。

インデントを適切に付けることで、どこからどこまでがif文の処理なのか、といった確認がしやすくなります。

一言でどこに付けるかを表すのは難しいですが、ネットに上がっているコードなどを参考にしてもらえればと思います。参考までに、以下をご覧ください。

Sub インデント()
    'プロシージャ内でインデント
    
    With Worksheets(1)
        .Select  'with文内でインデント
    End With
    
    With Worksheets(1)
        With .Cells(1, 1)
            .Value = 1  'with文が繰り返すごとにインデント
        End With
    End With
    
    If Cells(1, 1).Value <> "" Then
        MsgBox Cells(1, 1).Value  'if文内でインデント
    Else
        MsgBox "値が入力されていません"
    End If
    
    For i = 1 To 5
        MsgBox i  'ForNext文内でインデント
    Next i
    
End Sub

コメント