sinfi2005_vba.doc MS-ExcelVBA 基礎 (Visual Basic for Application). 主な仕様一覧 () データ型 主なもの 型 型名 型宣言文字 長さ 内容 整数型 Integer % 2 バイト -32,768 32,767 長整数型 Long & 4 バイト -2,47,483,648 2,47,483,647 単精度浮動小数点数 Single 型! 4 バイト 負値: -3.402823E38 -.40298E-45 正値:.40298E-45 3.402823E38 倍精度浮動小数点数 Double 型 # 8 バイト 負値: -.797693348623E308-4.9406564584247E-324 正値: 4.9406564584247E-324.7976933486232E308 文字列型 String $ オブジェクト型 Object 4 バイト オブジェクトを参照するためのアドレス バイト型 Byte バイト 0 255 の正の数値 ブール型 Boolean 2 バイト True(真)または False(偽) 可変長の場合 約 2GB(23 )バイト (2) プロシジャの構成 Sub プロシジャ名() 変数の型宣言... 処理... End Sub (3) 注釈(コメント) ' シングルクォーテーション(')のあとは注釈とみなされる (4) 型宣言 Dim 変数名 As 型名 (5) 名前付け規則 - 名前の先頭は文字でなければならない - 名前にはスペース ピリオド (.) カンマ(,) 感嘆符 (!) ハイフン(-) アットマーク(@) アンパサント(&) ドル記号($) ナンバ記号(#)などの特殊文字を使うことはできない ただし アンダースコア(_)を使用することができる - 変数名には データ型を示す型宣言文字 %,&,!,#,$ が使用できる - 名前は 255 文字 (半角の場合) 以内でなければならない - 通常 Visual Basic の関数 ステートメント およびメソッドと同じ名前を使うことはできない (6) 演算子 & 文字列の連結 * 乗算 + 加算 減算 / 除算 商 ^ べき乗 Mod 剰余
(7) (8) (9) (0) () (2) (3)
(4) (5) (6) (7) (8)
2. 2. 2.2 ex02 ()
sinfi2005_vba.doc ex03 セルの値の足し算(2) 上の応用として 行目の 2 つのセルの値を横に足して 結果を 行 3 列目(E8)に書き込むプログラムを 作成しなさい 2 3 4 5 6 Sub ex03() Dim p As Object Set p = Worksheets("a").Range("C8")? MsgBox ("終わりました") End Sub ex04 If...Then によるカテゴライズ 3 人について 70cm 以上を"高い" 70cm 未満を"ふつう"とカテゴライズするプログラムを作成しなさ い 結果を E 列に書き込みなさい 2 3 4 5 6 7 8 9 0 Sub ex04() Dim p As Object Set p = Worksheets("a").Range("D7") '...太郎 If p.cells(, ).Value >= 70 Then p.cells(, 2).Value = "高い" Else p.cells(, 2).Value = "ふつう" '...花子? '...一郎? MsgBox ("終わりました") End Sub 次の構文は If...Then による判断と分岐の例である 上のプログラムは 構文 2 に当たる (構文 ) 条件式が True ならば 処理を実行する ジャンプ命令がなければ の次へ進む 条件式が False ならば の次へ進む If 条件式 Then 処理 (構文 2) 条件式が True ならば 処理 を実行する ジャンプ命令がなければ の次へ進む 条件式が False ならば Else の次へ進み処理 2 を実行する ジャンプ命令がなければ の次へ進む If 条件式 Then 処理 Else 処理 2 (構文 3) 条件式 が True ならば 処理 を実行する ジャンプ命令がなければ の次へ進む 条件式 が False ならば 次の ElseIf へ進む 条件式 2 が True ならば 処理 2 を実行する ジャンプ命令がなければ の次へ進む 5
sinfi2005_vba.doc 条件式 2 が False ならば 次の ElseIf へ進む 条件式 3 が True ならば 処理 3 を実行する ジャンプ命令がなければ の次へ進む 条件式 3 が False ならば Else の次の処理 4 を実行する ジャンプ命令がなければ の次へ進む If 条件式 Then 処理 ElseIf 条件式 2 処理 2 ElseIf 条件式 3 処理 3 Else 処理 4 ex05 For...Next による繰り返し 8 人について 70cm 以上を"高い" 70cm 未満を"ふつう"とカテゴライズするプログラムを作成しなさ い Sub ex05() 2 Dim p As Object 3 Dim i As Integer 4 Set p = Worksheets("a").Range("D24") 5 For i = To 8 6 If p.cells(i, ).Value >= 70 Then 7 p.cells(i, 2).Value = "高い" 8 Else 9? 0 Next i 2 MsgBox ("終わりました") 3 End Sub 2. p をオブジェクト変数として宣言する 3. i を整数型の変数として宣言する 4. p にワークシート"a"のセル範囲"D24"を設定する 5. インデックスや添え字の値が規則的に変化して 同種の処理を繰り返すとき For...Next 構文を使用 する 次のような構文である For 変数 = 初期値 To 終値 Step 増分値 処理 Next 変数 これは 次の意味である 変数(添え字など)の値を初期値に設定して 回処理を実行する 次に変数の値を増分値だけ増やした値に変えて再度処理を実行する 同じく変数の値を増分値だけ増やした値に変えて再度処理を実行する これを繰り返す 変数を増分値だけ増やした値が終値を超えたら 処理を実行しないで Next の次へ進む Next の後の変数はなくてもよい Step のあとの増分値が のときは省略してよい この例では 変数 i を から 8 まで つずつ変えて 6 行 0 行の処理を 8 回繰り返している なお For...Next は入れ子の構文にして使用できる ex06 Do While...Loop による繰り返し 与えられた 0 進数を 2 進数に変換するプログラムを作成しなさい Sub ex06() 2 3 Dim shou, i As Integer 4 Dim p As Object 6
ex07 sort()
ex08 sort(2)