VBAのコードスニペット
ここでは、弊社新入社員研修を受ける受講者のためにVBAのコードスニペットをご紹介します。
なお、スニペットとは“断片”という意味です。
よく使用するコードの慣用句のようなものです。
1.セルの指定方法
1.1 一つのセルの選択
【書式】
Range(“セル”)
【例】
Range("A1").Select
1.2 セル範囲の選択
【書式】
Range(“開始セル:終了セル”)
【例】
Range("A1:D6").Select
1.3 複数のセル範囲の選択
【書式】
Range(“開始セル1:終了セル1,開始セル2:終了セル2”).Select
のようにカンマで区切る。
【例】
Range("A3:B6,C9:D12").Select
1.4 選択セルを次々と変化させる
【書式】
Cells(変数, 列番号)
のようにCellsを使う。
【例】
For i = 1 To 5 Cells(i, 4) = Cells(i, 2) * Cells(i, 3) Next
1.5 セル範囲を移動させる
【書式】
Range(“範囲”).Offset(行方向に動かすセル数,列方向に動かすセル数)
【例】
Range("A1:B6").Offset(3, 4).Select
1.6 シート全体を選択する
【書式】
Cells.Select
2.連続範囲のセルの最後を指定する
【書式】
A列目の最後 Cells(Rows.Count, "A").End(xlUp).Row
1行目の最後 Cells(1, Columns.Count).End(xlToLeft).Column
3.条件分岐
3.1条件に応じて処理をさせたり何もさせなかったりする
【書式】
If 条件 Then
条件を満たした場合の処理
End If
【例】
If Cells(i, 4) = 0 Then Cells(i, 4) = "×" End If
3.2 条件に応じて2通りの処理をする
【書式】
If 条件 Then
条件を満たした場合の処理
Else
条件を満たさなかった場合の処理
End If
【例】
If Cells(i, 4) >= 1.05 Then Cells(i, 5) = "S" Else Cells(i, 5) = "D" End If
3.3 条件に応じて3通り(以上)の処理をする
【書式】
If 条件1 Then
条件1を満たした場合の処理
ElseIf 条件2 Then
条件2を満たした場合の処理
Else
条件1,2を満たさなかった場合の処理
End If
【例】
If Cells(i, 4) >= 1.05 Then Cells(i, 5) = "S" ElseIf Cells(i, 4) >= 1 Then Cells(i, 5) = "A" Else Cells(i, 5) = "D" End If
3.4 条件に応じて3通り(以上)の処理をする()
Case 条件1
処理1
Case 条件2
処理2
(略)
Case Else
上記以外の場合の処理
End Select
Select Case Cells(i, 4) Case Is >= 1.05 Cells(i, 5) = "S" Case Is >= 1 Cells(i, 5) = "A" Case Is >= 0.95 Cells(i, 5) = "B" Case Is >= 0.9 Cells(i, 5) = "C" Case Else Cells(i, 5) = "D" End Select
4.繰り返し
4.1 回数指定ループ(For~Next文)
【書式】
【例】
For i = 2 To 11 Cells(i, 4) = Cells(i, 2) / Cells(i, 3) Next i
4.2 ループ(Do~Loop文)
【書式】
Do While 継続条件式
繰り返し処理
Loop
【例】
Do While Cells(i, 1) <> "" If Cells(i, 1) = a Then Exit Do End If i = i + 1 Loop
4.3 必ず一度は処理を実行する後判定ループ
【書式】
Do
繰り返し処理
Loop While 継続条件式
【例】
i = 1 Do Worksheets("Sheet1").Cells(i, 1).Value = i i = i + 1 Loop While i < 11
4.4 オブジェクトをループさせる(For Each In~Next文)
【書式】
For Each 変数 In 対象配列またはコレクション
繰り返し処理
Next
【例】
Dim R1 As Range Range("B4:E7").Select For Each R1 In Selection R1.Interior.ColorIndex = 3 Next R1
5. 乱数を生成する
5.1 0~1未満の数値をランダムに生成する
【書式】
Rnd()
5.1 最大値と最小値を指定して乱数を生成する
【書式】
Int(Rnd()*(最大値-最小値+1)+最小値)
【例】
For i = 1 To 10 Cells(i, 1) = Rnd() Cells(i, 2) = Int(Rnd() * (10 - 1 + 1) + 1) Next i
以上です。