Option Explicit
'練習1:
Sub renshu1()
If Range("G2").Value > 50 Then
Range("H2").Value = "合格"
Else
Range("H2").Value = "不合格"
End If
End Sub
'練習2:
Sub renshu2()
If Range("E2").Value = "女性" Then
Range("I2").Value = "OK"
Else
Range("I2").Value = "NG"
End If
End Sub
'練習3:
Sub renshu3()
If Range("E2").Value = "女性" Then
Range("I2").Value = "OK"
Range("A2:J2").Font.Color = vbRed
Else
Range("I2").Value = "NG"
Range("A2:J2").Font.Color = vbBlue
End If
End Sub
'練習4:
Sub renshu4()
If Len(Range("C2").Value) >= 6 Then
Range("J2").Value = "長いです"
Else
Range("J2").Value = "長くないです"
End If
End Sub
'練習5:
Sub renshu5()
If InStr(Range("B2").Value, "都島") > 0 Then
Range("J2").Value = "都島グループです"
End If
End Sub
'練習6:
Sub renshu6()
If Range("E2").Value = "女性" Then
If Range("G2").Value >= 70 Then
Range("H2").Value = "合格"
Else
Range("H2").Value = "不合格"
End If
Else
If Range("G2").Value >= 80 Then
Range("H2").Value = "合格"
Else
Range("H2").Value = "不合格"
End If
End If
End Sub
'練習7:
'ヒント:If ... ElseIf ... ElseIf ... Else ... End If という構文になります。
Sub renshu7()
If Range("G2").Value > 80 Then
Range("L2").Value = Range("C2").Value
ElseIf Range("G3").Value > 80 Then
Range("L2").Value = Range("C3").Value
ElseIf Range("G4").Value > 80 Then
Range("L2").Value = Range("C4").Value
ElseIf Range("G5").Value > 80 Then
Range("L2").Value = Range("C5").Value
ElseIf Range("G6").Value > 80 Then
Range("L2").Value = Range("C6").Value
ElseIf Range("G7").Value > 80 Then
Range("L2").Value = Range("C7").Value
ElseIf Range("G8").Value > 80 Then
Range("L2").Value = Range("C8").Value
ElseIf Range("G9").Value > 80 Then
Range("L2").Value = Range("C9").Value
ElseIf Range("G10").Value > 80 Then
Range("L2").Value = Range("C10").Value
ElseIf Range("G11").Value > 80 Then
Range("L2").Value = Range("C11").Value
Else
Range("L2").Value = "該当なし"
End If
End Sub
'練習1:
Sub renshu1_hanako()
Dim gyo
For gyo = 2 To 11
If Range("G" & gyo).Value > 50 Then
Range("H" & gyo).Value = "合格"
Else
Range("H" & gyo).Value = "不合格"
End If
Next
End Sub
'練習2:
Sub renshu2_hanako()
Dim gyo
For gyo = 2 To 11
If Range("E" & gyo).Value = "女性" Then
Range("I" & gyo).Value = "OK"
Else
Range("I" & gyo).Value = "NG"
End If
Next
End Sub
'練習3:
Sub renshu3_hanako()
Dim gyo
For gyo = 2 To 11
If Range("E" & gyo).Value = "女性" Then
Range("I" & gyo).Value = "OK"
Range("A" & gyo & ":J" & gyo).Font.Color = vbRed
Else
Range("I" & gyo).Value = "NG"
Range("A" & gyo & ":J" & gyo).Font.Color = vbBlue
End If
Next
End Sub
'練習4:
Sub renshu4_hanako()
Dim gyo
For gyo = 2 To 11
If Len(Range("C" & gyo).Value) >= 6 Then
Range("J" & gyo).Value = "長いです"
Else
Range("J" & gyo).Value = "長くないです"
End If
Next
End Sub
'練習5:
Sub renshu5_hanako()
Dim gyo
For gyo = 2 To 11
If InStr(Range("B" & gyo).Value, "都島") > 0 Then
Range("J" & gyo).Value = "都島グループです"
End If
Next
End Sub
'練習6:
Sub renshu6_hanako()
Dim gyo
For gyo = 2 To 11
If Range("E" & gyo).Value = "女性" Then
If Range("G" & gyo).Value >= 70 Then
Range("H" & gyo).Value = "合格"
Else
Range("H" & gyo).Value = "不合格"
End If
Else
If Range("G" & gyo).Value >= 80 Then
Range("H" & gyo).Value = "合格"
Else
Range("H" & gyo).Value = "不合格"
End If
End If
Next
End Sub
'練習7:
Sub renshu7_hanako()
'以下のやり方は、基礎編フォローアップ演習内で扱います
Dim gyo
For gyo = 2 To 11
If Range("G" & gyo).Value > 80 Then
Range("L2").Value = Range("C" & gyo).Value
Exit For
End If
Next
End Sub
Matsumotoさんの投稿
(投稿ID: 4153)
kiso04_03IFThen_drill.xlsの練習7に行き詰っていいて、回答を確認できたらと思いました。
kiso04_03IFThen_drill.xls-[daihon0010(コード)]の回答そのものは作成していないので、Kiso04_04IfThenHanako.xlsを参考に自分で考えましょう。
Kiso04_04IfThenHanako.xls
をご参照ください!
> お世話になります。
> 誠に申しわけございませんが、
> kiso04_03IFThen_drill.xls-[daihon0010(コード)]の練習問題を
> していますが、回答はどこに記載しているのかがわかりません。
> 教えてください。宜しくお願いします
小川慶一さんのコメント
(コメントID: 5712)
なるほど。
それは、申し訳ありませんでした。ドリルのほうは、解答例がファイル内にありませんでした。
以下のとおりです。よろしく、お願いいたします。
(ハナコの例もつけました)
ファイルのほうも修正しておきます。
Matsumotoさんのコメント
(コメントID: 5713)
問題文にある「最初に…」を深読みしすぎてドツボにはまっていましたが、そもそもElseif構文が上から順番に処理をして「最初に条件を満たしたものを選択する」構文なのですね。
マクロが言語という意味が身に沁みました。
マクロを正確な日本語に置き換えられるか、逆は、
日本語(問題文or やりたいこと)を正確なマクロに置き換えれるか
これはやはり言語ですね。
Matsumotoさんのコメント
(コメントID: 5714)
フォローアップ演習の続きが楽しみです。
また、問題文の回答だと最後に以下一文が入りますね。
そこで追加の質問です。今回なぜか、ElseとRangeの間に「:(コロン)」が自動で入ってしまいました。
マクロ事態は問題なく起動します。これは何が原因でしょう?
小川慶一さんのコメント
(コメントID: 5715)
こちらこそ、サンプルデータの作り込みの件では、失礼しました。
> 問題文にある「最初に…」を深読みしすぎてドツボにはまっていましたが、そもそもElseif構文が上から順番に処理をして「最初に条件を満たしたものを選択する」構文なのですね。
> マクロが言語という意味が身に沁みました。
> マクロを正確な日本語に置き換えられるか、逆は、
> 日本語(問題文or やりたいこと)を正確なマクロに置き換えれるか
> これはやはり言語ですね。
実際にとりくんでみると、いろいろな気づきが得られますね。
以下の記事も、このタイミングで一読ください。
・エクセルマクロ習得に関係する4つの能力
https://www.exvba.com/4skills.php#language
ひきつづきよろしくお願いいたします。
小川慶一さんのコメント
(コメントID: 5716)
記号コロン「:」は、複数行を一行にまとめて書くときに使う記号です。
例:
記号コロン「:」に何もなくてもVBAの文法的にはいちおうOKです。
ではあるのですが、記号コロン「:」には、使うメリットはまったくないに等しいです ヾ(´ー`)ノ
↑
ご指摘ありがとうございます。修正しておきます。
ひきつづきよろしくお願いいたします。
> ifelseをハナコにする例はかなりシンプルになってよいですね。
> フォローアップ演習の続きが楽しみです。
> また、問題文の回答だと最後に以下一文が入りますね。
> [code]Else: Range("L2").Value = "該当なし"[code]
>
> そこで追加の質問です。今回なぜか、ElseとRangeの間に「:(コロン)」が自動で入ってしまいました。
> マクロ事態は問題なく起動します。これは何が原因でしょう?