2018年度都市環境学科Visualプログラミング
• プログラムの制御構造は下記の6つ
– (1) 連接(連なり)
– (2) 所定回数反復(一定回数の繰り返し)
– (3) 判断(分かれ)
– (4) 多方向分岐
– (5) 前判定反復
– (6) 後判定反復
• 上記以外は使ってはいけない.
141流れの制御構造―多方向分岐
if文による多方向に分岐する処理(1)
Sub elseIf2()
Dim a As Integer
a = Range("A1").Value
If (a = 1) Then
MsgBox "aは1です."
ElseIf (a = 2) Then
MsgBox "aは2です."
ElseIf (a = 3) Then
MsgBox "aは3です."
ElseIf (a = 4) Then
MsgBox "aは4です."
Else
MsgBox "aは1~4ではありません."
End If
End Sub
2018年度都市環境学科Visualプログラミング
if文による多方向に分岐する処理(2)
143
Sub elseIf3()
Dim score As Integer Dim judge As String
If (Range("A2").Value <> "") Then
score = Range("A2").Value If (score >= 90) Then
judge = "A"
ElseIf (score >= 80) Then judge = "B"
ElseIf (score >= 70) Then judge = "C"
ElseIf (score >= 60) Then judge = "D" Else judge = "E" End If Else judge = "×" End If Range("B2").Value = judge End Sub ある範囲と一致する場合の例
多方向分岐~
Select Case文(1)
Select Case
条件対象
Case
値1(論理式1)
処理1
Case
値2(論理式2)
処理2
:
[Case Else
処理n
]
End Select
一般形
2018年度都市環境学科Visualプログラミング
多方向分岐~
Select Case文(2)
Sub selectCase()
Dim a As Integer
a
= Range("A1").Value
Select Case
a
Case
1
MsgBox "aは1です."
Case
2
MsgBox "aは2です."
Case
3
MsgBox "aは3です."
Case
4
MsgBox "aは4です."
Case
Else
MsgBox "aは1~4ではありません."
End Select
End Sub
a = 1のとき 1つの値と一致する場合の例 145多方向分岐~
Select Case文(3)
Sub selectCase2()Dim score As Integer Dim judge As String
If (Range("A2").Value <> "") Then
score = Range("A2").Value Select Case score
Case Is >= 90: 'Case 90 To 100でも可 judge = "A" Case Is >= 80 judge = "B" Case Is >= 70 judge = "C" Case Is >= 60 judge = "D" Case Else judge = "E" End Select Else judge = "×" End If Range("B2").Value = judge End Sub ある範囲と一致する場合の例
Isキーワードは式の左
側にしか使えない
!
⇒
×
Case 90 =< Is
2018年度都市環境学科Visualプログラミング
多方向分岐~
Select Case文(4)
Sub selectCase3()
Dim
age
As Integer
age
= Range("A1").Value
Select Case
age
Case
Is < 20
:
'Case 0 To 19でも可
MsgBox "未成年ですね?"
Case
30 To 39
MsgBox "30代ですね?"
Case
60
MsgBox "還暦ですね?"
Case
77, 88, 99
MsgBox "喜寿か米寿か白寿ですね?"
Case Else
MsgBox
age
& "ですね?"
End Select
End Sub
その他の複雑な例
147
Like演算子
Sub findString()
Const NR As Integer = 47
Dim iR As Integer, ss As String
For iR = 1 To NR
ss = cells(iR, 2).Value
If (ss
Like "*島*"
) Then
Cells(iR, 2).Font.ColorIndex = 3
End If
Next iR
End Sub
・県名に「島」の字の含まれる
5県の文字が赤くな
る."
*
"は,ワイルドカードと呼ばれる.
・Like演算子はSelect Case文では使えない.
中途省略2018年度都市環境学科Visualプログラミング
Like演算子に用いるワイルドカード(1)
2018年度都市環境学科Visualプログラミング
Phoneticプロパティ(1)
• キーボードから,シートのセル"A1"に「中央大
学」と入力してみる.
– ⇒ふりがなの情報も保存される.
151Sub testPhonetic()
Dim ss As String
ss = Range("A1").Phonetic.Text
MsgBox ss
End Sub
Sub testPhonetic2()
Dim ss As String
Range("A1").Phonetic. _
CharacterType = xlHiragana
ss = Range("A1").Phonetic.Text
MsgBox ss
End Sub
Phoneticプロパティ(2)
• キーボードから東北地方の県名
を入力し,昇順に並べ替えてみ
る.⇒ちゃんと
50音順になる
2018年度都市環境学科Visualプログラミング
Phoneticプロパティ(3)
153 Sub getPhonetic() Const NR As Integer = 6 Dim iR As Integer For iR = 1 To NR Cells(iR, 1).Phonetic.CharacterType = _ xlHiragana Cells(iR, 2).Value = _ Cells(iR, 1).Phonetic.Text Next iR End Subふりがなが抽出できた.
Phoneticプロパティ(4)
• テキストエディタから東北地方の
県名を貼り付け,昇順に並べ替
えてみる.⇒
50音順にならない
ふりがなの情報がなく漢字の文字コード順に並べ変わるため
8AE2h・8EE8h 8B7Bh・8FE9h 8E52h・8C60h 8F48h・9363h 90C2h・9058h 959Fh・9387h 県名の Shift JISコード (16進数)2018年度都市環境学科Visualプログラミング
• プログラムの制御構造は下記の6つ
– (1) 連接(連なり)
– (2) 所定回数反復(一定回数の繰り返し)
– (3) 判断(分かれ)
– (4) 多方向分岐
– (5) 前判定反復
– (6) 後判定反復
• 上記以外は使ってはいけない.
155流れの制御構造―前判定反復
前判定反復~
Do Loop文(1)
Do
While
条件式
処理
Loop
一般形
Do
Until
条件式
処理
Loop
一般形
(1) 条件式が
満たされ
ている間
繰り返す場合
(2) 条件式が
満たされ
るまで
繰り返す場合
※どちらも1度も処理が行われない場合がある!
繰返し回数は不明で,繰返し処理を始める前に条件判断を行って
結果的に繰返し回数が決まるもので,以下の
2とおりの形がある.
2018年度都市環境学科Visualプログラミング
前判定反復~
Do Loop文(2)
Sub doWhileLoop()
Dim iR As Integer iR = 1
Do While (Cells(iR + 1, 3).Value >= 0.5)
Cells(iR + 1, 3).Interior.ColorIndex = 20 iR = iR + 1 Loop End Sub 勝率が高い順にチームが並んでいるシートで, 勝率50%以上のチームの勝率の背景を水色 にする.1つも塗られない場合がありうる. 157
前判定反復~
Do Loop文(3)
Sub doUntilLoop()Dim iR As Integer iR = 1
Do Until (Cells(iR + 1, 3).Value < 0.5)
Cells(iR + 1, 3).Interior.ColorIndex = 20 iR = iR + 1 Loop End Sub 勝率が高い順にチームが並んでいるシートで, 勝率50%以上のチームの勝率の背景を水色 にする.1つも塗られない場合がありうる.
2018年度都市環境学科Visualプログラミング