VBAの初心者向けに基本操作方法(プログラム制御)を紹介していきたいと思います。
偶数と奇数の判定
Dim msg As String '変数msgを設定する
If Range("A1").Value Mod 2 = 0 Then '偶数の判定する
msg = "odd number" '偶数の場合の処理
Else 'それ以外の場合(今回は偶数以外)
msg = "even number" 'それ以外の場合の処理
End If '処理の終了
MsgBox msg 'メッセージボックスを表示する
今回はIf文を使って判定の処理をしています。コードの中で特に2行目が重要で
If Range("A1").Value Mod 2 = 0 Then もしも A1の値を 2で割って0になった 場合に
と言う風に読むことができます。
1~10の数字を順番にセルへ入力する(For文)
For i = 1 To 10 'iを1~10まで変動する
Cells(i, 1) = i 'セルを指定してiを入力する
Next i '次のiへ移行します
今回はFor文を使っています。iの値は1からスタートし、Next iで2へと移行します。これをiが10になるまで繰り返すという内容になってます。
For文の2重ループの例
For i = 1 To 9
For j = 1 To 9
Cells(i, j) = i * j
Next
Next
この処理によって下の写真の様に九九の表を作ることができます!
1~10の数字を順番にセルへ入力する(Do_Loop)
i = 1 '変数iの値を指定
Do While i <= 10 'iが10以下の範囲で繰り返しを指定
Cells(i, 1) = i
i = i + 1
Loop
フィボナッチ数列
Dim P As Long
Dim F As Long
Dim F1 As Long
Dim F2 As Long
F1 = 1
For P = 1 To 10
F1 = F1 + F2
F2 = F
F = F1
Range("A" & P).Value = F
Next
1~30までを表示し条件によって一部の表示を変更する
i = 0
Do While i <= 29
i = i + 1
If i Mod 3 = 0 Then '3で割って0になった場合
Cells(i, 1) = "Fizz" 'Fizzと表示する
ElseIf i Mod 5 = 0 Then '5で割って0になった場合
Cells(i, 1) = "Buzz" 'Buzzと表示する
Else
Cells(i, 1) = i
End If
Loop
今回はIf文とFor文とDo Loopを紹介しました。VBAの処理ではかなり使用頻度の高い構文なので使い方をマスターしましょう。
<for文の使用例>
より実践的なfor文
Sub test()
Dim i
Dim ctrRow
Dim endRow
ctrRow = 2
'最終行を取得する
endRow = Range("A2").End(xlDown).Row
For i = 2 To endRow
'C1「OK」と同じ判定の項目の時
If (Range("C" & i).Value = Range("C1").Value) Then
Range("E" & ctrRow).Value = Range("A" & i).Value
Range("F" & ctrRow).Value = Range("B" & i).Value
Range("G" & ctrRow).Value = Range("C" & i).Value
Range("H" & ctrRow).Value = Range("D" & i).Value
ctrRow = ctrRow + 1
End If
Next i
End Sub