- 練習問題 20問(初心者〜中級手前)
- 問1:1〜30 の整数を 3 ずつ増やしながら出力(Step 3 を使う)
- 問2:10〜1 を逆順で出力(Step -1 を使う)
- 問3:1〜100 のうち 7 の倍数だけ出力
- 問4:A1〜A20 の文字列に「★」を付けて B 列にコピー
- 問5:A1〜A10 のうち、空白でないセルだけ数える
- 問6:1〜50 の数字を 5 行×10 列に並べる
- 問7:B1〜B10 の数値を 2 倍して C 列に書く
- 問8:九九の表(9×9)を A1:I9 に作る(別バージョン)
- 問9:1〜100 で合計が 300 を超えた時点でループを終了(Exit For)
- 問10:1〜15 のそれぞれの値を平方(2乗)して出力
- 問11:選択範囲のセルを For Each で全部「大文字」に変換
- 問12:1〜12 の月を A1:A12 に縦に書く
- 問13:1 から 200 までの偶数の合計を求める
- 問14:A1〜A30 のうち、数値だけ合計する
- 問15:A列の中で「OK」と書いてある行番号をすべて出力
- 問16:1〜100 のうち、3 と 5 の両方の倍数だけ出力
- 問17:選択範囲の空白セルだけに「(空白)」と書き込む
- 問18:A1〜A10 の文字列を逆順にして B 列に出力
- 問19:A列に 1〜100 の数字を入れる(1行ずつ)
- 問20:二重ループで三角形の数字図形を A1〜 に作る
練習問題 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