
No.5
- 回答日時:
Unloadだけでは、オブジェクトが残ってしまう場合があるので
フォームのQueryUnloadで自分自身(フォームオブジェクト)を
破棄するように記述するようにした方が良いです。
メインフォームなら、
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Set Form1 = Nothing
End
End Sub
サブフォームなら、
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Set Form2 = Nothing
End Sub
※Form1、Form2はフォーム名です。
QueryUnloadには特に記述していませんでした。
ここでも破棄するように書いた方がいいのですね・・・
ありがとうございました。
No.4
- 回答日時:
フォームやクラスというプログラムの一部を終了(というかアンロード)するだけでなく、
プログラム全体(EXE)を終了するのであれば、
Endステートメントを使えば終了できます。
但し、終了する前に最後の状態を保存する等の処理は少し考えなければいけないと思います。
人によっては推奨しない人もいますが、
私は良くというか絶対使うようにしています。
どこで終了しているか明示的にする為に。
またVBのランタイムが入っていないのであれば、プログラムの実行すらできないと思いますが・・・。
昔のOSであれば入っていない可能性がありますが、
最近のOSでは何もインストールしなくても入っていると思います。
それか知らずに何かのインストーラにてインストールされる事もあると思います。
(ランタイムに関しては推測で自信ありません。)
参考URL:http://www.microsoft.com/japan/msdn/library/ja/v …
Endは私も必ず使うようにしています。
OSはWin2000です。
だからかも知れませんが、プログラムの実行は
できました。
ただ、必要なランタイムが足りなかったみたいです。
どうもありがとうございました。
No.3
- 回答日時:
フォームモジュールの中で監視、待機等の無限ループを行っている場合、
Unload Me
としてもインスタンスを破棄できず、
DoEvents
Unload Me
で正常に終了できた、という経験があります。(VB6.0)
当然、ループの中にも、DoEventsを入れます。
(いつでも割り込みが入れられるように)
コードの一部を抜粋すると、下記のような要領です。
Option Explicit
Private UnLoadFlg As Boolean
Private Sub cmdEnd_Click()
UnLoadFlg = True
DoEvents
Unload Me
End Sub
Private Sub Form_Activate()
Do Until UnLoadFlg
'監視ロジック(省略)
Call Sleep(50)
DoEvents
Loop
End Sub
Private Sub Form_Load()
UnLoadFlg = False
End Sub
No.2
- 回答日時:
VBで作成したGUIのアプリは、フォームをすべてアンロードすれば終了します。
なので、見えないフォームが残っているんでしょう。
ロードしたフォームをすべてアンロードしていないためです。
自分ではアンロードしたつもりでも、アンロードした後にコントロールのプロパティを見たときに暗黙的にロードされて残ることもあります。
アンロード時にはロードされている
全てのフォームを閉じるようにしていました。
ただ、アンロード後に暗黙的にロードされて残ることも
あることは知りませんでした。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロセスがタスクマネージャーに残るのは、なぜ?
Windows 10
-
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
VBアプリケーションで終了コードを指定する方法
Visual Basic(VBA)
-
-
4
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
5
vb6.0からのタスクの終了
Visual Basic(VBA)
-
6
VB6でEndステートメントに変わる方法
Visual Basic(VBA)
-
7
frxファイルの役目
Visual Basic(VBA)
-
8
VBで実行中のEXEファイルの情報を取得したい
Visual Basic(VBA)
-
9
VB6のメモリ解放に関して
Visual Basic(VBA)
-
10
テキストボックスの入力制限
Visual Basic(VBA)
-
11
ウィンドウを終了させたい・・・
Visual Basic(VBA)
-
12
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
13
Hideについて(.NET)
Visual Basic(VBA)
-
14
VB6.0のデザイン時 コントロールの移動 Vista
Visual Basic(VBA)
-
15
VB6の強制終了について
Visual Basic(VBA)
-
16
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
17
VB6のShell制御について
Visual Basic(VBA)
-
18
VB6でLabelの最前面にText Boxを書く
Visual Basic(VBA)
-
19
[VB6] フォームを閉じる方法について
Visual Basic(VBA)
-
20
VB.NET 自プログラムのプロセス終了のイベント
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
VBA リストボックスをダブルク...
-
Googleフォーム・複数人の申し...
-
アクセス フォームが存在する...
-
Accessでサブフォームの合計を...
-
ユーザーフォーム上にアイコン...
-
Accessでフォームから別フォー...
-
サブフォームの新規レコードに...
-
PDFフォームに本日の日付を自動...
-
ACCESS 表形式フォームで1レ...
-
子フォームから親フォームのオ...
-
アクセス・別フォームの新規レ...
-
WithEvents変数について
-
Access サブフォームでの複数行...
-
C# マルチディスプレイにて、...
-
VBプログラムの終了
-
ACCESS VBAサブフォーム(DATA S...
-
C#で作成したDLLをDelphiで呼ぶ...
-
いつもお世話になっています VB...
-
EXCELのデータフォームのサイズ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
Accessでフォームから別フォー...
-
アクセスVBA フォームのス...
-
サブフォームのイベント取得
-
VBAにてメッセージボックスを最...
-
サブフォームの行ごとにコンボ...
-
ExcelVBAでユーザーフォーム内...
-
サブフォームの新規レコードに...
-
フォーム上の全てのコントロー...
-
accessで2つ以上のフォームを起...
-
Accessのトグルボタンでサブフ...
-
ユーザーフォーム上にアイコン...
-
ExcelVBAでフォーム内でブック...
-
PDFフォームに本日の日付を自動...
-
リストボックスの選択解除
-
dbOpenTableとdbOpenDynaset
-
VBAでフォームのスクロールバー...
-
Access サブフォームでの複数行...
-
フォームで複数のチェックボッ...
おすすめ情報