Excel VBA | For…Next文

VBA
スポンサーリンク

練習問題 20問(初心者〜中級手前)

各問題のあとに 模範解答コード も付けています。
例としてどんどん VBE に貼って動かしてみてください。


問1:1〜30 の整数を 3 ずつ増やしながら出力(Step 3 を使う)

Sub Q9()
    Dim i As Long
    For i = 1 To 30 Step 3
        Debug.Print i
    Next i
End Sub
VB

問2:10〜1 を逆順で出力(Step -1 を使う)

Sub Q10()
    Dim i As Long
    For i = 10 To 1 Step -1
        Debug.Print i
    Next i
End Sub
VB

問3:1〜100 のうち 7 の倍数だけ出力

Sub Q11()
    Dim i As Long
    For i = 1 To 100
        If i Mod 7 = 0 Then Debug.Print i
    Next i
End Sub
VB

問4:A1〜A20 の文字列に「★」を付けて B 列にコピー

Sub Q12()
    Dim i As Long
    For i = 1 To 20
        Cells(i, "B").Value = Cells(i, "A").Value & "★"
    Next i
End Sub
VB

問5:A1〜A10 のうち、空白でないセルだけ数える

Sub Q13()
    Dim i As Long, cnt As Long
    For i = 1 To 10
        If Trim(Cells(i, "A")) <> "" Then cnt = cnt + 1
    Next i
    MsgBox cnt
End Sub
VB

問6:1〜50 の数字を 5 行×10 列に並べる

Sub Q14()
    Dim r As Long, c As Long
    Dim n As Long: n = 1

    For r = 1 To 5
        For c = 1 To 10
            Cells(r, c).Value = n
            n = n + 1
        Next c
    Next r
End Sub
VB

問7:B1〜B10 の数値を 2 倍して C 列に書く

Sub Q15()
    Dim i As Long
    For i = 1 To 10
        Cells(i, "C").Value = Cells(i, "B").Value * 2
    Next i
End Sub
VB

問8:九九の表(9×9)を A1:I9 に作る(別バージョン)

Sub Q16()
    Dim r As Long, c As Long
    For r = 1 To 9
        For c = 1 To 9
            Cells(r, c).Value = r * c
        Next c
    Next r
End Sub
VB

問9:1〜100 で合計が 300 を超えた時点でループを終了(Exit For)

Sub Q17()
    Dim i As Long, total As Long
    For i = 1 To 100
        total = total + i
        If total > 300 Then Exit For
    Next i
    MsgBox "i=" & i & " の時点で300を超えた"
End Sub
VB

問10:1〜15 のそれぞれの値を平方(2乗)して出力

Sub Q18()
    Dim i As Long
    For i = 1 To 15
        Debug.Print i & " → " & (i * i)
    Next i
End Sub
VB

問11:選択範囲のセルを For Each で全部「大文字」に変換

Sub Q19()
    Dim c As Range
    For Each c In Selection
        If Not IsEmpty(c) Then c.Value = UCase(c.Value)
    Next c
End Sub
VB

問12:1〜12 の月を A1:A12 に縦に書く

Sub Q20()
    Dim i As Long
    For i = 1 To 12
        Cells(i, "A").Value = i & "月"
    Next i
End Sub
VB

問13:1 から 200 までの偶数の合計を求める

Sub Q21()
    Dim i As Long, s As Long
    For i = 2 To 200 Step 2
        s = s + i
    Next i
    MsgBox s
End Sub
VB

問14:A1〜A30 のうち、数値だけ合計する

Sub Q22()
    Dim i As Long, s As Double
    For i = 1 To 30
        If IsNumeric(Cells(i, "A").Value) Then
            s = s + Cells(i, "A").Value
        End If
    Next i
    MsgBox s
End Sub
VB

問15:A列の中で「OK」と書いてある行番号をすべて出力

Sub Q23()
    Dim i As Long
    For i = 1 To 100
        If Cells(i, "A").Value = "OK" Then Debug.Print i
    Next i
End Sub
VB

問16:1〜100 のうち、3 と 5 の両方の倍数だけ出力

Sub Q24()
    Dim i As Long
    For i = 1 To 100
        If i Mod 3 = 0 And i Mod 5 = 0 Then Debug.Print i
    Next i
End Sub
VB

問17:選択範囲の空白セルだけに「(空白)」と書き込む

Sub Q25()
    Dim c As Range
    For Each c In Selection
        If Trim(c.Value) = "" Then c.Value = "(空白)"
    Next c
End Sub
VB

問18:A1〜A10 の文字列を逆順にして B 列に出力

Sub Q26()
    Dim i As Long
    For i = 1 To 10
        Cells(i, "B").Value = StrReverse(Cells(i, "A").Value)
    Next i
End Sub
VB

問19:A列に 1〜100 の数字を入れる(1行ずつ)

Sub Q27()
    Dim i As Long
    For i = 1 To 100
        Cells(i, "A").Value = i
    Next i
End Sub
VB

問20:二重ループで三角形の数字図形を A1〜 に作る

例:

1
1 2
1 2 3
1 2 3 4
...
Sub Q28()
    Dim r As Long, c As Long
    For r = 1 To 10
        For c = 1 To r
            Cells(r, c).Value = c
        Next c
    Next r
End Sub
VB
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました