では、配列を使った練習問題をいくつか用意して、それぞれに解答例と解説をつけます。初心者が「配列+ループ」に慣れるためのステップアップ問題です。
問題1:最大値を求める
問題:
10個の整数を配列に入れて、その中で最大の値を求めて表示してください。
解答例
Sub FindMax()
Dim nums(9) As Integer
Dim i As Integer
Dim maxVal As Integer
' データをセット(例:1~10)
For i = 0 To 9
nums(i) = i + 1
Next i
' 初期値は最初の要素
maxVal = nums(0)
' 最大値を探す
For i = 1 To 9
If nums(i) > maxVal Then
maxVal = nums(i)
End If
Next i
MsgBox "最大値は " & maxVal
End Sub
VB解説
- 最大値を探すときは「最初の要素」を基準にする。
- ループで順番に比較し、より大きければ更新。
- 最後に最大値を表示。
👉 ポイント: 初期値を0にすると、負の数が含まれる場合に誤動作するので注意。
問題2:文字列の逆順表示
問題:
文字列を配列に1文字ずつ格納し、逆順に並べて表示してください。
解答例
Sub ReverseString()
Dim text As String
Dim chars() As String
Dim i As Integer
Dim result As String
text = "HELLO"
ReDim chars(Len(text) - 1)
' 1文字ずつ配列に格納
For i = 1 To Len(text)
chars(i - 1) = Mid(text, i, 1)
Next i
' 逆順に取り出す
For i = UBound(chars) To LBound(chars) Step -1
result = result & chars(i)
Next i
MsgBox result ' OLLEH
End Sub
VB解説
Mid関数で文字列を1文字ずつ取り出す。- 配列に格納してから逆順にループ。
UBoundとLBoundを使うと柔軟に範囲を指定できる。
👉 ポイント: 文字列操作は配列を使うと「並べ替え」や「検索」がやりやすい。
問題3:平均点と合格判定
問題:
5人分の点数を配列に入れて、平均点を求め、さらに60点以上かどうかを判定してください。
解答例
Sub CheckScores()
Dim scores(4) As Integer
Dim i As Integer
Dim sum As Integer
Dim avg As Double
' データをセット
scores(0) = 55
scores(1) = 72
scores(2) = 90
scores(3) = 63
scores(4) = 48
' 合計
For i = 0 To 4
sum = sum + scores(i)
Next i
' 平均
avg = sum / (UBound(scores) + 1)
MsgBox "平均点は " & avg
' 合格判定
For i = 0 To 4
If scores(i) >= 60 Then
MsgBox scores(i) & "点 → 合格"
Else
MsgBox scores(i) & "点 → 不合格"
End If
Next i
End Sub
VB解説
UBound(scores) + 1で要素数を求める。- 平均を計算して表示。
- 各点数をループで判定し、合格/不合格を表示。
👉 ポイント: 配列+ループで「まとめて判定」が簡単にできる。
まとめ
- 問題1: 最大値 → 初期値を最初の要素にして比較。
- 問題2: 文字列逆順 → 配列に格納して逆ループ。
- 問題3: 平均+判定 →
UBoundで要素数を求め、ループで判定。
これらを練習すると「配列を使ってまとめて処理する」感覚が身につきます。
