Project

Formモジュール = オブジェクト + コード
普通に新しいプロジェクトで標準.exeを開くと、Formモジュールが自動的に作成されます。
Formモジュールは以下の二つで構成されます。
(1)オブジェクト
(2)コード

分かりやすく階層で示します。
Project1(作ろうとするアプリケーション全体、つまりプロジェクトのこと)
  Formモジュール(Project1の中にあるFormモジュールのこと)
    (1)オブジェクト(Formモジュールの表示状態をここで作成する。)
    (2)コード(Formモジュールのプログラムをここに書く。)
[Formオブジェクト]
Formオブジェクトの画像
実行したときのウィンドウイメージを作成します。 コードと対になっています。 ここにボタンやラベルなど、様々なものを貼り付けてウィンドウの見かけを作ります。
タイトルバーの所の表示「Project1 - Form1 (Form)」は、
・「Project1」はプロジェクトの名称で、
・「Form1」はフォームモジュールの名称で、
・「(Form)」はFormオブジェクトであることを示します。
[Formコード]
Formコードの画像
ここに実際のプログラムを書きます。 オブジェクトと対になっています。 例えば、オブジェクトに貼り付けたボタンが押されたときのプログラムなどを書きます。
タイトルバーの所の表示「Project1 - Form1 (コード)」は、
・「Project1」はプロジェクトの名称で、
・「Form1」はフォームモジュールの名称で、
・「(コード)」はForm1のコードであることを示します。
プログラム作成の基本手順
プログラムの作成は、基本的には以下のような手順で行います。
ここではボタンをFormオブジェクトに貼り付ける場合の例を示します。
(1)ツールボックスからCommandButtonコントロールを選択し、Formオブジェクトに貼り付ける。
(2)CommandButtonが押された時のプログラム(イベントプロシージャ)を書く。
(3)必要ならば、イベントプロシージャから呼び出されるサブルーチンを書く。
Formモジュールと標準モジュール
小規模なアプリケーションを作成する場合は、Formモジュールは一つだけで十分です。 しかし、普通はどうしても複数のFormモジュールを持つアプリケーションにならざるを得ません。 そうすると、いろんなFormコードで同じようなコードを書いてしまうことが多々あります。 そんなときには「標準モジュール」を使いましょう。 標準モジュールは、Formオブジェクトを持たないコードだけのモジュールです。 ここに共通のプロシージャ(関数)を置いておき、各Formコードからそのプロシージャを呼び出せば良いのです。 これでプログラムは短くなり、すっきりします。
Module Form
オブジェクト
コード 特徴
Form
モジュール
持つ 持つ Formオブジェクトとコードが合体したモジュールです。 Formモジュールのコードはローカルなプロシージャになります。 (明示的にパブリック宣言した時を除く)
標準
モジュール
持たない 持つ コードだけのモジュールです。 標準モジュールのコードはパブリックなプロシージャになります。 (明示的にローカル宣言した時を除く)
スタートアップの設定(Formモジュールを初めに起動編)
作成したプロジェクトが複数のFormモジュールを持つ場合、 起動時にどのFormモジュールを初めに動作させるかを指定することができます。 指定は以下のドロップダウンリストの中からForm(Formのオブジェクト名)を選択することにより行います。
VBの統合開発環境のメニュー
 −プロジェクト(P)
  −[プロジェクト名]のプロパティ(E)...
   −全般タブ
    −スタートアップの設定(S)
     =>任意のFormのオブジェクト名を選択
この設定を行うと、プログラム起動後に発生するイベントのうち、最も早く発生するイベントとして、 指定したFormオブジェクトのイニシャライズイベントが発生します。
つまり、いちば〜ん初めに何かをさせたい場合は、 指定したFormモジュールのForm_Inisializeのイベントプロシージャを書いておけば良いのです。
以下に具体例を示します。
起動時にウィンドウを最大化で表示
起動時に最大化したいFormモジュールのコードに以下のプログラムを追加します。
Private Sub Form_Initialize()
    Me.WindowState = vbMaximized
End sub
Private プライベートなプロシージャ(関数)。
つまり、このコードが書いてあるFormモジュール以外から呼び出せない関数であることを示す。
Sub 戻り値のないプロシージャであることを示す。
ちなみに戻り値のあるプロシージャの場合はSubの代わりにFunctionとなる。
Form_Initialize() Form_Initialize()〜End subまでがフォームの初期化イベントであることを示す。
Me オブジェクト自身(自分)、つまりこの場合はFormオブジェクト自身のことを示す。
.(ドット) .(ドット)の左辺に対する「プロパティ(属性)のうち、」という意味である。
Me.WindowState 「Formオブジェクトのプロパティ(属性)のうち、WindowStateというプロパティ」という意味である。
= vbMaximized 「最大化を示す値を代入」という意味である。
このvbMaximizedは定数2と見なすようにVB自身が宣言している。
「= vbMaximized」の代わりに「= 2」と書いても良いのだが、 あとでプログラムを読み直すときの見やすさなどを考えると、 やはり「= vbMaximized」のほうが良い。 この他に指定できる値には以下がある。
VbNormal・・・ノーマル。定数は0。
VbMinimized・・・最小化。定数は1。
End Sub 戻り値のないプロシージャの終わりを示す。
ちなみに戻り値のあるプロシージャの場合はSubの代わりにFunctionとなる。
スタートアップの設定(標準モジュールを初めに起動編)
作成したプロジェクトが標準モジュール(ウィンドウを持たないプログラム)を持つ場合、 起動時に標準モジュール内のプログラムから動作が始まるようにも設定可能である。 しかしながら、Formが任意のFormモジュールから起動するように指定できるのに対し、 標準モジュールでは任意の関数から起動するようにはできない。 標準モジュールから起動する場合は、Sub mainという関数から実行される。 よって、標準モジュールのコードのどこかに必ずSub main関数を作っておく必要がある。 指定の仕方はFormのスタートアップの設定と同様に、 以下のドロップダウンリストの中からSub mainを選択することにより行う。
VBの統合開発環境のメニュー
 −プロジェクト(P)
  −[プロジェクト名]のプロパティ(E)...
   −全般タブ
    −スタートアップの設定(S)
     =>Sub mainを選択
この設定を行うと、プログラム起動後に発生するあらゆるイベントよりも早くSub Main関数が実行される。
どういうときに使うかというと、
・起動時に*.iniファイルからデータを読んでから最初に表示する画面を決定する場合。
・起動時にデータをロードする場合。
などです。
以下に具体例を示します。
起動時にメッセージを表示する
標準モジュールに以下のプログラムを書くことにより、フォームが開く前にメッセージボックスを表示します。 プロジェクトには以下のモジュールが存在することが前提です。
・Form1というオブジェクト名のFormモジュール
・標準モジュール
Sub main()
    MsgBox "一番初めにこの文字列が表示されます"
    Form1.Show
End Sub
Sub main() PrivateやPublicの指定なしでいきなりSubが来ます。
これはSub Mainを作る際の決まり事だと考えてください。 ちなみに、
・Subとは戻り値のないプロシージャであることを示します。
・標準モジュール内でPrivateを明示的に付けない場合、Publicと判断されます。
・標準モジュール内でPrivateと明示的に付けた関数は、 その標準モジュールのファイル内だけから呼び出すことのできる関数と判断されます。
MsgBox "文字列" ダブルクォーテーションで囲まれた文字列をメッセージボックスで表示し、プログラムは停止します。
メッセージボックスの「OK」ボタンを押すと、再びプログラムは次のコードから処理されます。
Form1.Show Form1オブジェクトのShowメソッドが実行されます。
簡単に言うと、Form1が表示されるというだけです。
詳細に言うと、このメソッドで様々なことが内部的に発生しています。 Showメソッドは、Hideメソッドなどで画面を隠している状態(メモリ上に残っている状態)のものを表示状態にするときには、 ただ単に、非表示から表示に切り替えるだけです。 ところが、今回の場合はForm1はメモリの中に存在さえしない状態です。 メモリの中に存在しない物をShowメソッドで表示しろと言われても表示できる訳がありません。
そこで、VBは、存在しないFormオブジェクトのShowメソッドが実行された場合、 全て自動的に、
(1)Formオブジェクトをメモリにロード。
(2)Form_Initializeイベントが発生(Form_Initializeプロシージャが存在しなければ飛ばす)
(3)Form_Loadイベントが発生(Form_Loadプロシージャが存在しなければ飛ばす)
(4)Formを表示 という一連の動作をします。
プロジェクトの名前
普通に新しいプロジェクトで標準.exeを開くと、自動的にプロジェクトの名前はProject1と名付けられます。 これを変更するには、
VBの統合開発環境のメニュー
 −プロジェクト(P)
  −[プロジェクト名]のプロパティ(E)...
   −全般タブ
    −プロジェクト名(N):
のテキストボックスで行います。
アプリケーションのタイトルとアイコン
アプリケーションのタイトルとアイコンを変更するには、
VBの統合開発環境のメニュー
 −プロジェクト(P)
  −[プロジェクト名]のプロパティ(E)...
   −実行可能ファイルの作成タブ
    −「アプリケーション」フレーム
     −タイトル(T):
     −アイコン(O):
で行うことができます。 アイコンは自由に選択できるのではなく、Formに設定されているアイコンの中から選択することになります。 Formのアイコン設定を変更するには、FormのIconプロパティを変更します。
アプリケーションのバージョン情報
VBのアプリケーションでは以下のバージョン情報を設定することができます。
(1)コメント
(2)ファイルの説明
(3)会社名
(4)商標
(5)製品名
(6)著作権
これらの情報を入力/変更/修正するには、
VBの統合開発環境のメニュー
 −プロジェクト(P)
  −[プロジェクト名]のプロパティ(E)...
   −実行可能ファイルの作成タブ
    −「バージョン情報」フレーム
で行うことができます。 ここで設定された情報は、コンパイルされた配布プログラムのプロパティとなります。 例えば、配布プログラムファイルをエクスプローラなどで右クリックし、 クリックメニューの中の「プロパティ」を選択すると、「バージョン情報」として確認することができます。
アプリケーションのバージョン番号
VBで作成した配布用のプログラムには任意のバージョン番号を設定することができます。 バージョン番号は以下の3つから構成されます。
(1)メジャー
(2)マイナ
(3)リビジョン
これらの番号を入力/変更/修正するには、
VBの統合開発環境のメニュー
 −プロジェクト(P)
  −[プロジェクト名]のプロパティ(E)...
   −実行可能ファイルの作成タブ
    −「バージョン番号」フレーム
で行うことができます。 自動インクリメント(E)チェックボックスにチェックを入れることにより、 コンパイルのたびに自動でリビジョンがインクリメントされます。
アプリケーションのバージョン番号をプログラムで使う
バージョン番号はプログラムから呼び出すことができます。
アプリケーション自体はAppで表され、バージョン番号の各プロパティは以下のようになります。
(1)メジャー・・・App.Major
(2)マイナ・・・App.Minor
(3)リビジョン・・・App.Revision
たとえば、Formのタイトルバーにバージョン番号を入れたい場合は以下のようなプログラムとなります。
タイトルバーにバージョン番号を表示
Private Sub Form_Load()
    Me.Caption = App.EXEName _
               & Str(App.Major) & "." _
               & Str(App.Minor) & "." _
               & Str(App.Revision) & "."
End Sub
ちなみに、App.EXENameはアプリケーションのexeファイル名プロパティを参照します。
[TopPageに戻る]