もしも○○の時【If】

今回は【If】について解説していきたいと思います。

前回の答え

がその前に、前回の練習問題の答えは下記のコードになります。
Sub 繰り返し()
Dim s As Integer
For s = 1 To 20 Step 2
    Cells(s, 1).Value = s
Next
End Sub 
少し解説をすると、4行目【Cells(s, 1).Value = s】の部分では、セルのs行目の1列目=1行目の1列目のセルにsの値=1を入力します
2回目の繰り返しでは、sの値をプラス2ずつ進んでいきますので、2回目の繰り返しは3行目の1列目=A3のセルにsの値=3を入力します。
最後にsの値が20を超えたら繰り返しが終わりますので、Stepで2ずつプラスで進んでいると最後のsの値は19になりますので、19行目で処理を終了します。

この繰り返しについてはマクロの基本の動作として役に立ちますので、ぜひ覚えてくださいね。

If~End If

では【If】の解説に入りたいと思います。
まず【If】とは英語で「もしも」という意味を持っているそのままの意味でVBAでも使われます。
Excelの関数をやってる人はわかりやすいですよね。

例)If a.Value = "正解" Then
   MsgBox "正解"
  End If

上記の例を見ていきましょう。

If a.Value = "正解" Then


これは日本語に訳すと「もしも:aの値が:正解:の時」という訳になります。
:で区切ってる位置をそのままIfの分に当てはめてあげるとわかると思います。

MsgBox "正解"


上記はメッセージボックスに正解の文字を表示するだけになります。

End If


この部分に関してはEndの意味の通り、Ifステートメントの終わりを表します。

If~ElseIf~Else~End If

このIfに関してはよく使われますが、簡単なので多分すぐにクリアできると思います。
ただ、上記の例だとTrue(真)の場合しかかかれてないですよね?
ExcelのIf関数でも一緒ですが、False(偽)の場合はどう書くかというと

例)If a.Value = "正解" Then
    MsgBox "真"
  ElseIf a.Value = "不正解" Then
    MsgBox "真"
  Else
    MsgBox "偽"
  End If

上記の例の様に【Else】を使います。

If a.Value = "正解" Then


この部分に関しては最初の解説と一緒なので省きます。

ElseIf a.Value = "不正解" Then


ここではIfがElseIfになっています。
「1行目のIf文がTrue(真)じゃなかった時:aの値が不正解:だったら」という順番になります。

Else


これはIfのある文で「Trueが一つもなかった時=False(偽)だった時」を表します。
なので上記の例だと「変数aの値が正解、もしくは不正解の時=Ifの返答がTrueになる時」はメッセージボックスには「真」が表示され、「どちらでもなかった時=Ifの返答がFalseになる」はメッセージボックスには「偽」が表示されます。

練習問題

では最後に練習問題です。
A1~A10までのセルに1~100までの好きな数字を入れてください。
1.セルの値が80以上の場合は「よく出来ました」を表示
2.セルの値が50以上80未満の場合は「あと一歩」を表示
3.セルの値が50未満の場合は「もう少し頑張りましょう」を表示
上記3つの条件をB1~B10までのセルに自動で入力されるマクロを組んでください。
ヒントは前回の繰り返し【For】を使用し、上記のIfの解説を応用すると組めると思います。

このIfステートメントは次回使用しますので、覚えたら次の繰り返し【For Each】へお進みください。