1
0

More than 3 years have passed since last update.

VBAの基本操作(プログラム制御)

Last updated at Posted at 2021-04-16

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

この処理によって下の写真の様に九九の表を作ることができます!
九九.jpg

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

for文.png
for文を使えばこんな感じでデータの中で一部を参照し合致したデータを抽出することができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0