パソコン活用研究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活用研究目次