ここでは、当社 新入社員研修を受ける受講者のためにVBAのコードスニペットをご紹介します。
なお、スニペットとは“断片”という意味です。
よく使用するコードの慣用句のようなものです。
1.セルの指定方法
1.1 一つのセルの選択
【書式】
Range(“セル”)
【例】
1 |
Range("A1").Select |
1.2 セル範囲の選択
【書式】
Range(“開始セル:終了セル”)
【例】
1 |
Range("A1:D6").Select |
1.3 複数のセル範囲の選択
【書式】
Range(“開始セル1:終了セル1,開始セル2:終了セル2”).Select
のようにカンマで区切る。
【例】
1 |
Range("A3:B6,C9:D12").Select |
1.4 選択セルを次々と変化させる
【書式】
Cells(変数, 列番号)
のようにCellsを使う。
【例】
1 2 3 |
For i = 1 To 5 Cells(i, 4) = Cells(i, 2) * Cells(i, 3) Next |
1.5 セル範囲を移動させる
【書式】
Range(“範囲”).Offset(行方向に動かすセル数,列方向に動かすセル数)
【例】
1 |
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
【例】
1 2 3 |
If Cells(i, 4) = 0 Then Cells(i, 4) = "×" End If |
3.2 条件に応じて2通りの処理をする
【書式】
If 条件 Then
条件を満たした場合の処理
Else
条件を満たさなかった場合の処理
End If
【例】
1 2 3 4 5 |
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
【例】
1 2 3 4 5 6 7 |
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
1 2 3 4 5 6 7 8 9 10 11 12 |
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文)
【書式】
【例】
1 2 3 |
For i = 2 To 11 Cells(i, 4) = Cells(i, 2) / Cells(i, 3) Next i |
4.2 ループ(Do~Loop文)
【書式】
Do While 継続条件式
繰り返し処理
Loop
【例】
1 2 3 4 5 6 |
Do While Cells(i, 1) <> "" If Cells(i, 1) = a Then Exit Do End If i = i + 1 Loop |
4.3 必ず一度は処理を実行する後判定ループ
【書式】
Do
繰り返し処理
Loop While 継続条件式
【例】
1 2 3 4 5 |
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
【例】
1 2 3 4 5 |
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)+最小値)
【例】
1 2 3 4 |
For i = 1 To 10 Cells(i, 1) = Rnd() Cells(i, 2) = Int(Rnd() * (10 - 1 + 1) + 1) Next i |
以上です。