パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

Visual Basicのスタートアップモジュールとエントリポイントの変更

プログラムを実行した時に一番最初にロードされるモジュールがスタートアップモジュールです。
デフォルトのスタートアップモジュールはではFORM1です。

そのスタートアップモジュールの中で一番最初に実行されるコード(場所)がエントリポイントです。
Visual Basicのエントリポイント(プログラムのスタート地点)はデフォルト設定では
FORM1 のForm_Initialize イベントです。

※Visual Basicの本には、Form_Load イベントがエントリポイントと記述している場合もありますが、
Form_LoadイベントよりForm_Initializeイベントのほうが先に発生します。

たいがいのプログラム言語ではエントリポイントはmain( )関数 (あるいはmainメソッド)というのが
お決まりのルールなんですが、Visual Basicのデフォルト設定で作成した場合、main( )というコード
はどこにも見当たりません。

試しに、以下のようにForm1だけを表示する空のプログラムを作成してみます。



ソースコード(Form1.frm)の中身は以下の通り。

VERSION 4.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 2745
ClientLeft = 1320
ClientTop = 1875
ClientWidth = 3480
Height = 3315
Left = 1200
LinkTopic = "Form1"
ScaleHeight = 2745
ScaleWidth = 3480
Top = 1425
Width = 3720
End
Attribute VB_Name = "Form1"
Attribute VB_Creatable = False
Attribute VB_Exposed = False

Form1のプロパティだけですね。コントロールもイベントプロシージャも何もなし。

おそらく、コンパイル時にVisual Basicが自動的にmain( )にあたるコードを付加しているのだと思います。


Visual Basicでもスタートアップモジュールを標準モジュールにして、エントリポイントを明示的に Sub main
にすることができます。

[ツール]-[オプション] でオプション画面を開くと、プロジェクトのタブに
スタートアップフォームの設定箇所があります。
デフォルトではForm1がスタートアップフォームになっています。
標準モジュールまたはクラスモジュールを追加すると、スタートアップフォームで Sub mainが選択できる
ようになります。そうすると、Sub mainの記述のあるモジュールがスタートアップモジュールとなり、
プログラムのエントリポイントはSub mainになります。




スタートアップモジュールをわざわざ変更するようなケースてどういう場合があるの?という質問については
二重起動の防止 などをご参照下さい。


TopPage > Visual BasIc&Excel活用研究目次