地域情報学演習 VBAプログラミング 第3回 2017年10月24日 三井真吾 メール:smitsui@staff.kanazawa-u.ac.jp 居室:工作実習棟 HP:佐々木敏彦研究室HP http://next.w3.kanazawa-u.ac.jp/
If Then、 ElseIf Then, Else If 80 < Score Then MsgBox “80より大きい” ElseIf 50 < Score Then MsgBox “50より大きい” Else MsgBox “50以下” End If 課題 入力値(Inputbox)に対して偶数と奇数を判別して表示せよ。 配列に数字を3つ用意して大きい順に並び替えよ。 演算子 意味 A > 0 And B >0 両方を満たした場合 A > 0 Or B > 0 いずれか1つを満たした場合 Not A = 0 条件式を満たさない場合 演算子 意味 = 等しい < より小さい <= 以下 > より大きい >= 以上 <> 等しくない
Select Case Select Case Score Case “A” MsgBox “優” Case “B” MsgBox “良” テキストの条件式 Select Case Score Case “A” MsgBox “優” Case “B” MsgBox “良” Case Else MsgBox “可” End Select 条件分岐が多い場合、if文では複雑になってしまうので、Select Caseを使うと見やすくなる。 数字の条件式 Select Case Score Case Is > 80 MsgBox “80より大きい” Case Is > 50 MsgBox “50より大きい” Case Else MsgBox “50より小さい” End Select Select Case Score Case 81 To 100 MsgBox “80より大きい” Case 51 To 80 MsgBox “50より大きい” Case Else MsgBox “50より小さい” End Select
For Next 繰り返し処理を行う場合は、For Nextを使う。 For i = 3 to 10 ‘3から開始 For i = 1 To 10 Step 2 ‘2ずつ増加 For i = 10 To 1 Step -1 ‘1ずつ減る For i = 1 to 10 MsgBox i Next i Forループを抜けるときはは、Exit Forを使う。 課題: セルA1~A10に1~10を入れよ。 Dim Ans As String For i = 1 To 10 Ans = InputBox(“数字を入れて下さい。”) If Ans = 0 Then Exit For End If Next i
For Each Next Goto シートやワークブック、配列に対して一括で処理したいときに使用する。 課題:右のマクロをFor Nextで書き換えよ。 Dim st As Worksheet For Each st In Sheets MsgBox st.Name Next Goto Dim Ans As String For i = 1 To 10 Ans = InputBox(“数字を入れて下さい。”) If Ans = 0 Then Goto Fin End If Next i Fin: MsgBox(“0が入力されたので終了します。”) Gotoで飛ぶことが出来る。 多用すると分かりにくくなるので注意。
Do Loop ループの回数が決まっていないときはDo Loopを使用する。 ※無限ループの可能なので注意。Ctrl+Breakで強制終了。 前判断 後判断 満たすまで Do Unitl…Loop Do…Loop Until 満たす間 Do Whie…Loop Do…Loop While Dim Flag As Boolean Dim Ans As String Flag = 0 Do While Flag = 0 Ans = InputBox(“数字を入れて下さい。”) If Ans = 0 Then Exit Do End If Loop