• 検索結果がありません。

Microsoft PowerPoint - Visualプログラミング

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - Visualプログラミング"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

2018年度都市環境学科Visualプログラミング

• プログラムの制御構造は下記の6つ

– (1) 連接(連なり)

– (2) 所定回数反復(一定回数の繰り返し)

– (3) 判断(分かれ)

– (4) 多方向分岐

– (5) 前判定反復

– (6) 後判定反復

• 上記以外は使ってはいけない.

141

流れの制御構造―多方向分岐

(2)

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

(3)

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 ある範囲と一致する場合の例

(4)

多方向分岐~

Select Case文(1)

Select Case

条件対象

Case

値1(論理式1)

処理1

Case

値2(論理式2)

処理2

:

[Case Else

処理n

]

End Select

一般形

(5)

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

(6)

多方向分岐~

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

(7)

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

(8)

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文では使えない.

中途省略

(9)

2018年度都市環境学科Visualプログラミング

Like演算子に用いるワイルドカード(1)

(10)
(11)

2018年度都市環境学科Visualプログラミング

Phoneticプロパティ(1)

• キーボードから,シートのセル"A1"に「中央大

学」と入力してみる.

– ⇒ふりがなの情報も保存される.

151

Sub 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

(12)

Phoneticプロパティ(2)

• キーボードから東北地方の県名

を入力し,昇順に並べ替えてみ

る.⇒ちゃんと

50音順になる

(13)

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

ふりがなが抽出できた.

(14)

Phoneticプロパティ(4)

• テキストエディタから東北地方の

県名を貼り付け,昇順に並べ替

えてみる.⇒

50音順にならない

ふりがなの情報がなく漢字の文字コード順に並べ変わるため

8AE2h・8EE8h 8B7Bh・8FE9h 8E52h・8C60h 8F48h・9363h 90C2h・9058h 959Fh・9387h 県名の Shift JISコード (16進数)

(15)

2018年度都市環境学科Visualプログラミング

• プログラムの制御構造は下記の6つ

– (1) 連接(連なり)

– (2) 所定回数反復(一定回数の繰り返し)

– (3) 判断(分かれ)

– (4) 多方向分岐

– (5) 前判定反復

– (6) 後判定反復

• 上記以外は使ってはいけない.

155

流れの制御構造―前判定反復

(16)

前判定反復~

Do Loop文(1)

Do

While

条件式

処理

Loop

一般形

Do

Until

条件式

処理

Loop

一般形

(1) 条件式が

満たされ

ている間

繰り返す場合

(2) 条件式が

満たされ

るまで

繰り返す場合

※どちらも1度も処理が行われない場合がある!

繰返し回数は不明で,繰返し処理を始める前に条件判断を行って

結果的に繰返し回数が決まるもので,以下の

2とおりの形がある.

(17)

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

(18)

前判定反復~

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つも塗られない場合がありうる.

(19)

2018年度都市環境学科Visualプログラミング

前判定反復~

Do Loop文(4)

Sub untilZero()

Dim iR As Integer

Dim sum As Double

Dim x As Double

sum = 0

iR = 1

x = Cells(iR, 1).Value

Do While

(x <> 0)

sum = sum + x

iR = iR + 1

x = Cells(iR, 1).Value

Loop

MsgBox "合計は" & sum & "です"

End Sub

A列のデー

タが

0にな

るまで数値

を合計する.

159 同じ内容

(20)

前判定反復~

Do Loop文(5)

Sub factorial()

Const MaxInt As Long = 2147483647

Dim iR As Integer

Dim f As Long

iR = 1

f = 1

Do While

(f < MaxInt / (iR + 1))

iR = iR + 1

f = f * iR

Cells(iR + 1, 1).Value = iR

Cells(iR + 1, 2).Value = f

Loop

End Sub

階乗の計算例: Long型でも,13!以上は記憶できない. Long型で記憶できる 最大の整数を定数化

参照

関連したドキュメント

[r]

食品 品循 循環 環資 資源 源の の再 再生 生利 利用 用等 等の の促 促進 進に に関 関す する る法 法律 律施 施行 行令 令( (抜 抜す

・条例第 37 条・第 62 条において、軽微なものなど規則で定める変更については、届出が不要とされ、その具 体的な要件が規則に定められている(規則第

* 広告や機能は条件によってはご利用いただけない場合があります。

保安規定第66条条文記載の説明備考 (3)要求される措置 適用される 原子炉 の状態条件⑧要求される措置⑨完了時間 運転

3.3.2.1.3.1 設置許可基準規則第 43 条第 1 項への適合方針 (1) 環境条件及び荷重条件(設置許可基準規則第 43 条第 1 項一).

- 復水移送ポンプ フィルタ装置 よう素フィルタ ラプチャーディスク ドレン移送ポンプ ドレンタンク 遠隔手動弁操作設備 フィルタベント遮蔽壁 配管遮蔽 復水貯蔵槽