1 つのプロジェクトには、フォーム、コントロール、モジュール、変数、定数、プロシージャ、関数、オブジェクトを含む (ただしこれらに限定されない) 識別子 (非予約語) を最大 32,000 個含めることができます。実際の識別子の数は、利用可能なメモリによって制限されることに注意してください。
Visual Basic の変数名は 255 文字を超えることはできません。また、フォーム、コントロール、モジュール、クラス名は 40 文字を超えることはできません。 Visual Basic では、プロジェクト内のさまざまなオブジェクトの実際の数を制限しません。
◆管理の限界◆
各非グラフィカル コントロール (図形、線、画像、ラベルを除くすべてのコントロール) はウィンドウを使用します。各ウィンドウはシステム リソースを使用するため、同時に存在できるウィンドウの総数は利用可能なリソースによって制限されます。正確な制限は、利用可能なシステム リソースと使用されるコントロールの種類によって異なります。システム リソースの消費を削減するために、グラフィックを作成または表示するときに、ピクチャ ボックス コントロールの代わりに、シェイプ、ライン、ラベル、およびイメージ コントロールを使用できます。
1. コントロールの総数
1 つのフォームで許可されるコントロールの最大数は、使用されるコントロールの種類と利用可能なシステム リソースによって異なります。ただし、フォームごとに許可されるコントロール名は 254 個のみという固定制限があります。配列内のすべてのコントロールはコントロール名を共有するため、コントロール配列はこの制限を 1 回だけカウントします。すべてのバージョンで、コントロール配列インデックスの制限は 0 ~ 32,767 の範囲です。フレーム内にフレーム コントロールを入れ子にするなど、各コントロールの上にコントロールを配置する場合、Visual Basic は通常、入れ子になったコントロールのレベルを 25 までしか受け入れません。
2. 特殊制御の制限
次の表に、Visual Basic の特殊コントロールのプロパティ制限を示します。
List および ListCount リスト ボックス コントロールおよびコンボ ボックス コントロール: 項目の最大数は 32K、各項目のサイズ制限は 1K (1024 バイト) です。
テキスト テキスト ボックス コントロール: 64K に制限されます。
キャプション ラベル コントロール: 1024 バイトに制限されます。
コマンド ボタン コントロール、チェック ボックス コントロール、フレーム コントロール、およびオプション ボタン コントロール: 255 文字に制限されており、これらの制限を超えるタイトルは切り捨てられます。
カスタム コントロール プロパティのタイトル: 32K に制限
メニュー コントロール: 235 文字までに制限
すべてのコントロールにタグを付ける: 利用可能なメモリ サイズに制限されます
すべてのコントロールに名前を付けます: 40 文字以内に制限します
Visual Basic では、コントロールのプロパティ名は 30 文字に制限されていることに注意してください。
◆コード制限◆
フォーム、クラス、または標準モジュールにロードできるコードの総行数は 65,534 行に制限されています。コードの 1 行は 1023 バイトに制限されています。 1 行の実際のテキストの前にある先行スペースは 256 個以内、論理行の行継続文字 (_) は 25 個以内です。
1. プロシージャ、型、変数
モジュールごとのプロシージャの数に制限はありません。各プロセスには最大 64K のコードを含めることができます。プロシージャまたはモジュールがこの制限を超えると、Visual Basic はコンパイル時エラーを生成します。この種のエラーが発生した場合は、特に大きなプロシージャをいくつかの小さなプロシージャに分割するか、モジュール レベルの宣言を別のモジュールに移動することで、この種のエラーを回避できます。 Visual Basic はテーブルを使用して、コード内に識別子名 (変数、プロシージャ、定数など) を格納します。各テーブルは 64K に制限されています。
2. ダイナミックリンクライブラリ宣言表
各フォームおよびコード モジュールは、ダイナミック リンク ライブラリのエントリ ポイントの構造を記述するテーブルを使用します。各構造体は約 40 バイトで、テーブルのサイズは 64K に制限されているため、モジュールごとに約 1500 個の宣言が必要になります。
3. プロジェクト一覧
アプリケーション全体で、すべての名前を含むテーブルが使用されます。これらの名前には次のものが含まれます。
・定数名
・変数名
・カスタマイズされた型定義名
・モジュール名
・DLL手続き宣言名
プロジェクト名テーブルの合計サイズに制限はありませんが、大文字と小文字を区別するエントリは 32K を超えてはなりません。 32K の制限を超えた場合は、PRivate 識別子を別のモジュールで再利用して、大文字と小文字を区別するエントリの数を 32K に制限できます。
4. 入力テーブル
別のモジュールで識別子が参照されるたびに、入力テーブルにエントリが作成されます。このような各エントリは少なくとも 24 バイトですが、64K に制限されているため、各モジュールは約 2000 個の参照を持つことができます。
5. モジュールエントリテーブル
この表の各モジュールは最大 125 バイトですが、合計の制限は 64K であるため、各プロジェクトは約 400 個のモジュールを作成できます。
◆データ制限◆
Visual Basic 言語の変数には次の制限が適用されます。
1. フォーム、標準、およびクラスモジュールのデータ
Visual Basic のフォームまたはモジュールの VBA モジュール データ セクション (つまり、宣言セクションで定義されたデータ) には、最大 64K のデータ セクションがあり、これには次のデータが含まれます。
・Staticで宣言したローカル変数
·配列および可変長文字列ではないモジュールレベルの変数
・各モジュール配列と可変長文字列は4バイトを占有します
2. プロシージャ、型、変数
プロシージャまたはモジュールが 64K コード制限を超えると、Visual Basic はコンパイル時エラーを生成します。
プロシージャで定義されたローカル変数が 64K を超えると、「ローカルの非静的変数が多すぎます」エラーが生成されます。
モジュールで定義されたモジュール レベルの変数が 64K を超える場合、または定義されたカスタム タイプが 64K を超える場合、「固定データまたは静的データは 64K を超えることはできません」というエラーが発生します。
この種のエラーが発生した場合は、大きすぎるプロシージャをいくつかの小さなプロシージャに分割するか、モジュール レベルの宣言を別のモジュールに移動することで、このエラーを回避できます。
変数として宣言された配列は配列空間全体を使用できません。64K の制限に影響するのは配列記述子だけです。たとえば、プロシージャ内で、またはモジュール レベルの宣言として、Dimx(1000000)AsByte として宣言されます。ただし、大きな固定サイズのレコード配列を宣言し、それらのレコードのインスタンスを変数として宣言すると、メモリ オーバーフローが発生する可能性があります。
3. カスタマイズタイプ
多くのカスタム タイプの可変長文字列の合計は 64K を超える可能性がありますが (各カスタム タイプの可変長文字列は 4 バイトしか占有せず、文字列の実際の内容は個別に保存されます)、カスタム タイプの変数は 64K を超えることはできません。カスタム タイプは他のカスタム タイプと一緒に定義できますが、このタイプの合計サイズは 64K を超えることはできません。
4. スタックスペース
実行時のパラメータとローカル変数はスタック領域を占有します。モジュール レベルの変数と静的変数は、フォームまたはモジュールのデータ セクションに割り当てられるため、スタック領域を占有しません。呼び出される DLL プロシージャは実行時にスタックを使用します。
Visual Basic 自体は、たとえば式の評価中に中間値を保存するためにスタックを使用します。
Visual Basic で使用できる合計スタック サイズは、スレッドごとに 1 メガバイト (1MB) です。ただし、隣接する空きメモリがある場合、スタック サイズはこの制限を超える可能性があります。
◆システムリソースの制限◆
Visual Basic および Visual Basic を使用して構築されたアプリケーションの特定の制限は、Microsoft Windows の影響を受けます。これらの制限は、Microsoft Windows のバージョンによって異なります。
開いている各ウィンドウはシステム リソース (Microsoft Windows が使用するデータ領域) を使用します。システムリソースの範囲を超えて実行すると、「Windows の動作に利用可能なリソースが不足しています」という実行時エラーが発生します。 Windows NT3.51では「プログラムマネージャ」または「ファイルマネージャ」の「ヘルプ」メニューから、Windows 95およびWindows NT4.0では「エクスプローラのヘルプ」メニューから「バージョン情報」を選択できます。残りのシステム リソースの割合を検出します。アプリケーションは、Windows API GetFreeSystemResources を呼び出して、システム リソースを再利用したり、ウィンドウ (開いているフォームや「コード」ウィンドウ、他のアプリケーションのウィンドウなど) を閉じたり、実行中のアプリケーションを終了したりすることもできます。
->