プログラム入門(EXCEL VBA によるプログラムの学習)


(未稿の項目は作成していません、項目が変わる可能性があります。ご容赦下さい。
 1.EXCEL VBAの準備

1.1.VBAエディタを開く
1.2.プログラムを記述する
1.3.実行ボタンの作成
1.4.エラー表示(例)



2.変数と型の宣言

2.1.2進法と16進法
2.2.変数宣言
2.3.代表的な型宣言
2.4.変数宣言エラー
2.5.配列とユーザ定義変数


3.演算・文字処理

3.1.演算の規則
3.2.条件判断
3.3.文字列





4.演算・文字処理

4.1.分岐
4.2.ループ
4.3.システム  エラー分岐





5.ユーザ関数(未稿)

5.1.関数(Sub)
5.2.関数(Functuin)
5.3.変数の受け渡し
5.4.関数の参照(CALL)



6.EXCEL VBAmp概要(未稿)

6.1.オブジェクトの階層構造)
6.2.セルの操作
6.3.シートの操作
6.4.ブックの操作
6.5.デバッグツールの概要

 
 7.ユーザフォーム(未稿)

7.1.ユーザフォーム
7.2.ツールボックス
6.3.ボタン
6.4.ラベル
6.5.テキストBOX
6.6.リストボックス
5.7.チェックボックス
5.8.オプションボタン
                     
サンプルプログラム
戻る 進む


2.変数宣言と型。

2.1.2進法と16進法

2進法と
16進法 
1)数の2進法での表現 「PC初級講座:3.1.2進法について」を参照 
2)マイナスの値     「PC初級講座:3.2.マイナスの値について」を参照
3)2進法と10進法の変換(整数)  「PC初級講座:3.3.2進法と10進法の変換について」を参照
4)BCDコード  「PC初級講座:3.4.BCD表現について」を参照
5)浮動小数点(実数)  「PC初級講座:3.5.浮動小数点について(実数)」を参照
 6)文字コード  「PC初級講座:4.文字コード」を参照


2.2.変数宣言
プログラムを書く  1)変数の式

@プログラムでは、
  a=b+5
  の様な式がよく使われる。ここで、a,b は変数で、その値は固定されない
(演算により変化する)

  A固定値(定数)として使用する場合は、プログラムの先頭で定数の宣言(後述)をする。

  Bプログラムで使用する式
  (例)a=b+5
  は、右項(a)と左項(b+5)が等しいという意味ではなく、「変数 bの値 に 5を加算して
 変数aに入れる」という意味になる。
  (但し、条件判断で使用する「=」は異なった使用法となる。)

2)変数の宣言

@変数はその名称と、型(個性)を宣言する必要がある。
  変数名にはEXCEL VBAですでに使用が決まっている名称は使用できない。
  DATE、TIME 等

 AEXCELマクロでの例(詳細は別項参照)

 ・Single・・・・・4バイトの単精度不動小数点
 ・Integer・・・・2バイトの整数値
 ・String・・・・・可変長文字列

 CEXCELのVBEの環境設定によっては、変数の宣言文(行)を必ずしも必要としないが、
  プログラムが複雑になると変数宣言が大切となる。
  特に用途を示すコメントをつける事が大切となるので、簡単なプログラムであっても記述に
コメントをつける”くせ”をつける事は後のメンテナンスの事を考えれば大切。

 D変数宣言をしない場合、「Vliant」という汎用の型に自動的になる。
  この型は、サイズが大きいので、メモリを多く使用する、プログラム処理速度が遅くなる
  等のマイナス要因がある。

 E多くの変数を使用する場合に、紛らわしい名称、意味のない名称を多用すると、誤使用による
バグが発生しやすいので、「変数の決め方」をプログラム設計当初に決めておくのが望ましい。





3)EXCELでの変数宣言

@変数の宣言は、

 「Dim a As Integer」
       の形で宣言する。

 ・Dim・・・宣言文であることを示す
 ・a  ・・・変数名
 ・As ・・・決まり文句
 ・Integer・・・整数の変数宣言
  (型は、文字列、浮動小数点等目的
によって替える)

4)変数宣言の有効範囲

@プロシジャーの外側(記述エリアの最上部)で変数宣言を行うと、EXCELファイルの

マクロプログラム全体で有効な宣言となる。(共有変数)

   A共有変数は、どのプロシジャーでも参照、値の書き換えが可能。共有変数を多用すると、

どの変数をどのプロシジャーで参照、変更しているかが、不明確となるので、多用は避け

たほうが良い。

   Bプロシジャーの内側(Sub xxx()End Subの間)で宣言した場合は、そのプロシジャー

の中でのみ有効な宣言となる。

   C下図AまたはBの宣言を行うと、各プロシジャー(Sub test,Sub Test2)の実行開始時に各

変数は初期化される("0"になる)

5)変数宣言の強制

変数の宣言をしていない変数を使用した時に
エラーとする事ができる。
EXCEL VBAの場合は、プログラム記述
エリアの先頭に「Option Explicit」と記述する。
(言語によって指定方法は異なる。)
変数名のコーディングミスを防ぐ事ができる。

 
 


2.3.代表的な型宣言 (EXCEL VBAの場合)
型宣言 言語によって宣言文(宣言の形式)は異なるが、種類的にはほぼ同じ
@Byte・・・・・1バイトの整数(0〜255)

整数用変数で、サイズが1バイトのため、符号無し(プラスのみ)0〜255までの整数を格納する。
他の言語の「Unsigned Char」に相当する。
他の言語で「Char」は、-128〜127の整数を格納する。


 AInteger・・・2バイトの整数(-32768〜32767)

整数用変数で、サイズが2バイトのため、-32768〜32767までの整数を格納する。
他の言語では、同じ2バイトで符号無し(マイナスなし)0〜65535
までの整数を格納する宣言(Unsigned Int)がある。

 
 BLong・・・・・4バイトの整数(-2147483648〜2147483647)

整数用変数で、サイズが4バイトのため、-2147483648〜2147483647までの整数を格納する。
他の言語では、同じ2バイトで符号無し(マイナスなし)
0〜4294967295までの整数を格納する宣言(Unsigned Long)が
ある。
 
 CSingle・・・・4バイトの単精度浮動小数点
(下記説明はIEEE規格・EXCEL VBAは異なる)
32ビットの表し方(IEEE規格による
・正負判断:1ビット
・指数部:8ビット
・仮数部:23ビット
浮動小数点の表し方(IEEE規格による)
(−1)S×1.M×2(E-127)
S:正否判定
M:仮数部
E:指数部
 
 DDouble・・・8バイトの倍精度不動小数点
(下記説明はIEEE規格・EXCEL VBAは異なる)
64ビットの表し方(IEEE規格による)
・正負判断:1ビット
・指数部:8ビット
・仮数部:23ビット
(−1)S×1.M×2(E-1023)
 
 EString・・・・文字列(可変長バイト)

文字列を格納する
 
 FDate・・・・・8バイトの日付データ

年月日、時刻情報を格納する。
 
GVariant・・・自由形式(入力値によって変化する)


2.4.変数宣言エラー(例)
エラー 1)オーバーフロー

 @変数 a に 「Integer」の変数宣言
を行った。
A「Integer」の有効数は、
-32768〜32767となっている
B「integer」で宣言した変数aに
 「40000」を入力使用とした。
C有効範囲を超えたため、エラーと
なった。  
Dメッセージ
「オーバーフローしました。」
2)型不一致のエラー

 @整数「Integer」の 宣言を行った変数に
  5 を入力し、
A文字「String」の宣言を行った変数に
 "3月"を入力し、
B両者をプラスした結果を整数の宣言を
行った変数cに代入しようとした。
C型不一致のためエラーとなった。
Dメッセージ
 「型が一致しません」
 3)型不一致でエラーならない場合(EXCEL VBA)

@数字の5と、文字の"3"をプラスして整数宣言した変数cに代入した。
   本来ならばエラーだが、EXCEL VBA では 文字の"3"を数字に自動変換してくれるので、
エラーとならない。

  A他の言語では、コンパイルエラーとなるか、意図しない結果が変数cに代入される。

  B常に「型」の整合性を意識してプログラムを作成すべき。



2.5.配列とユーザ定義変数
 配列 1)配列

複数のデータを、セルの列または行を扱うように、一つの変数名で、一群として扱う。
変数名(数字)という指定方法となる。

例 U_Name(3)と指定されたら、データの指定は、
  U_Name(0)〜U_Name(2)の範囲となる。
 (「0」から始まるので注意する)

繰り返し制御文のFor〜Nextと組み合わせて使用される事が多い。

配列で、範囲(上限と下限)を指定したい時は、

   「Dim U_Name(2 to 7) As Integer」

 の様に宣言する。

 2)2次元配列

EXCELでいう、列方向と、行方向の両方の指定を行う事も可能。
データの指定は、繰り返し制御文のFor を二重に使用する場合が多い。


 
 3)3次元配列

U_Name(3,2,4)の様に指定すると、3次元配列を宣言、使用する事が可能

 
 ユーザー定義変数 4)動的配列宣言

下記の理由からプログラムの途中で配列の宣言を行う場合がある。

 @配列の数をプログラムの中で決めたい時

 A大きな配列の場合、常時宣言したままだと、メモリを圧迫するため、必要な時のみ宣言する
  「Erase」により初期化されると、動的配列変数の使用していたメモリは解法される
  (通常の配列宣言変数は値は初期化されるが、メモリ空間は存続する。)
 値の初期化 6)値の初期化

配列変数の初期化
には「Erase」を用いる。

・数値は「0」
・文字列は「””」
(文字が無い状態)

・動的配列
(ReDin xxx(数字))
で宣言された配列
の場合、変数は使用し
ていたメモリ空間も開放される
(メモリを圧迫しない)




戻る 進む 株式会社 I.T.オフィス TOPページ
・商用を除き、この資料(一連のホームページ・素材)を自由に流用してかまいません。・商用を除き、このホームページへのLINKは自由に行ってかまいません。(連絡は不要です)・本資料の使用・流用に関するいかなる損害も当社は一切の責任を負いませんのでご承知下さい。・本資料の著作権は株式会社 I.T.オフィスにあります。
担当:システム技術担当 伊藤( Mail:k.itou@itoffice.jp )