【ExcelVBA】基本文法まとめ

コメントアウト

VBA
'コメントアウト

変数宣言

VBA
'Dim:プロシージャ、モジュール内のみで使用可能
Dim 変数名 As String(型)

'Public:プロジェクト全体でどこからでも使える
Public 変数名 As Long(型)

変数代入

VBA
変数名 = "値" 

'object型の場合Setが必要
Set 変数名 = "値" 

':区切りで変数宣言と代入を1行にまとめることが可能
Dim 変数名 As データ型: 変数名 = 初期値

シート指定

VBA
Sheets(インデックス番号)
Sheets("シート名")
Activesheet

セル指定

VBA
'単一セル
Cells(行番号,列番号)
Range("セル番地")
Range("セル名")

'セル範囲
Range("セル番地:セル番地:")
Range(Cells(行,番号),Cells(行,番号))

行指定

'単一行
Rows(行番号)
'行範囲
Range(Rows(行番号), Rows(行番号))
VBA
'単一行
Rows(行番号)

'行範囲
Range(Rows(行番号), Rows(行番号))

列指定

'単一列
Columns(列番号)
'列範囲
Range(Columns(列番号), Columns(列番号))
VBA
'単一列
Columns(列番号)

'列範囲
Range(Columns(列番号), Columns(列番号))

最大行数、最大列数

VBA
MaxRow = ActiveSheet.Cells(1, 1).End(xlDown).Row
MaxColumn = ActiveSheet.Cells(1, 1).End(xlToRight).Column

条件分岐(If)

VBA
If (条件) Then
    処理
ElseIf (条件) Then
    処理
Else
    処理
End If

ループ(For,While)

VBA
'------For文(iが10に至るまで繰り返す)------
Dim i As Long
For i = 1 To 10 Step 1
    MsgBox i
Next i

'------while文(条件に当てはまるまで繰り返す)------
Dim i As Long: i = 1
while i <= 10
    MsgBox i
    i = i + 1
wend

'------For Each文(グループの各要素に処理)------
Dim 要素を受け取る変数名 As 型
For Each 要素を受け取る変数名 In 配列やコレクションなどのグループ名
    処理
Next 要素を受け取る変数名
使用例
VBA
'各シート毎に処理
Dim i As Integer: i = 0
For i = 1 To ActiveWorkbook.Sheets.Count
    MsgBox Sheets(i).Name
Next
VBA
'セル範囲に対して、セル毎に繰り返し処理
Dim Rng As Range
For Each Rng In Range(Cells(1, 1), Cells(3, 1))
    MsgBox Rng.Value
Next Rng

その他

VBA
'先頭行に記載推奨。変数宣言を強制させる。
Option Explicit 

'画面描写停止&再開。処理高速化対応。
Application.ScreenUpdating = False '停止
Application.ScreenUpdating = True '再開