情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
数値のデータ型 Byte バイト型 ~255 1バイト Integer 整数型 -32,768 ~ 32,767 2バイト Long ~255 1バイト Integer 整数型 -32,768 ~ 32,767 2バイト Long 長整数型 -2,147,483,648 ~ 2,147,483,647 4バイト Single 単精度浮動小数点型 ±3.4×1038 ~ ±1.4×10-45 Double 倍精度浮動小数点型 ±1.8×10308 ~ ±4.9×10-324 8バイト
論理型・文字列型・その他 Boolean 論理型 True, False String 文字列型 Date 日付型 100年1月1日~9999年12月31日 Currency 通貨型 Longより大きな数値を扱える(小数点を含む数値も使える) Variant ユーザ定義型などあらゆる種類の変数に対応できる特別な型,データ型の宣言をしないとVariantになる
変数 値を入れておく箱のようなもの 変数の宣言 例:整数の値が入る“x”と言う名前の変数を用意する Dim x As Integer Integer型の変数xを宣言 Dim name As String String型の変数nameを宣言 黄色の箱は文字の箱 (String型) 水色の箱は整数の箱 (Integer型) name x x1 score abc
文字列変数の宣言 Sub myprogram3() Dim name As String name = “徳山” Msgbox name & “さん,こんにちは” End Sub
データの入力 Sub yeartrans3() ‘ 平成を西暦に直すプログラム Dim x1 As Integer Dim name As String name = InputBox (“あなたの名前は?”) x1 = InputBox(“あなたは平成何年生まれですか?”) x2 = x1 + 1988 Msgbox name & “さんは西暦” & x2 & “年生まれです” End Sub
エクセル関数ーIf文 「TRUE」 と「FALSE」での動作選択(Branching, 分岐) 「IF」文を用いたプログラム IF (判定式, 動作1, 動作2) 判定式がTrue なら動作1を、Falseなら動作2を行う =IF(論理式,[真の場合], [偽の場合]) 文字列で返す場合は “ ”で囲んで入力 数値の場合は数値のみを入力 論理式又はセル番号
エクセル関数ーIf文 >=60 合格 前回作成した成績の「合格」「不合格」の判定 不合格 60点以上は合格,60点未満は不合格 D16 =IF(A1>=60, “合格”, “不合格”) true >=60 合格 false 不合格
VBAでは If ~ Then ~ Else 論理式 If 論理式 Then Else End If 真の場合 動作1 偽の場合 動作2
成績の合否判定プログラム >=60 合格 入力された成績の「合格」「不合格」の判定を行って下さい 不合格 true false 60点以上は合格,60点未満は不合格 true >=60 合格 false 不合格
成績の合否判定プログラム Sub seiseki1() ‘ 成績の合否判定 Score1 >=60 合格 Dim score1 As Integer Dim name1 As String name1= InputBox(“名前は”) score1= InputBox(“成績を入力して下さい”) If score1 =>60 Then Msgbox “おめでとう! ” & name1 & “さんは合格しました.” Else Msgbox name1 & “さんは不合格です.” End IF End Sub Score1 >=60 true 合格 false 不合格
秀 >=90 優 >=80 良 >=70 >=60 可 If ~ Then ~ Else文を使った計算 不可 成績が90点以上なら秀、80点以上90点未満は優、70点以上80点未満は良、60点以上70点未満は可, 60点未満は不可 true 秀 >=90 false >=80 true 優 false >=70 true 良 false >=60 true 可 false 不可
エクセル関数If文を使った計算 秀 >=90 優 >=80 良 >=70 >=60 可 不可 true false 入れ子の構造 true 秀 >=90 false >=80 true 優 false >=70 true 良 false >=60 true 可 false 不可
成績の評価(エクセル関数If文を使った計算) 成績が90点以上なら“秀”、80点以上90点未満は“優”、70点以上80点未満は“良”、60点以上70点未満は“可”, 60点未満は“不可” =IF(B2>=90,“秀”,IF(B2>=80,“優”, IF(B2>=70,“良”, IF(B2>59,"可","不可"))))
VBAでは If ~ Then ~ ElseIf 論理式1 論理式2 真の場合 動作1 偽の場合 真の場合 動作2 If 論理式1 Then ElseIf 論理式2 Then Else End If 偽の場合 動作3 動作1 動作2 動作3
Sub seiseki2() ‘ 成績の評価 If ~Then ~ElseIf Dim score2 As Integer Dim name2 As String name2= InputBox(“名前は”) score2= InputBox(“成績を入力して下さい”) If score2 =>90 Then Msgbox name2 & “さんの成績は秀です.” ElseIf score2 =>80 Then Msgbox name2 & “さんの成績は優です.” ElseIf score2 =>70 Then Msgbox name2 & “さんの成績は良です.” ElseIf score2 =>60 Then Msgbox name2 & “さんの成績は可です.” Else Msgbox name2 & “さんの成績は不可です.” End If End Sub
If ~Then ~Else を使った入れ子構造のプログラム false 不可 >=60 true >=70 false 可 true >=80 false 良 true >=90 false 秀 true 優
Sub seiseki3() ‘ 成績の評価 If ~Then ~Else を使い入れ子構造のプログラム Dim score3 As Integer Dim name3 As String name3= InputBox(“名前は”) score3= InputBox(“成績を入力して下さい”) If score3 =>60 Then If score3 =>70 Then If score3 =>80 Then If score3 =>90 Then Msgbox name3 & “さんの成績は秀です.” Else Msgbox name3 & “さんの成績は優です.” End IF Else Msgbox name3 & “さんの成績は良です.” End IF Else Msgbox name3 & “さんの成績は可です.” End IF Msgbox name3 & “さんの成績は不可です.” End IF End Sub