VB5(SP3)で作成したアプリケーション(exeファイル)が終了しない

このQ&Aのポイント
  • VB5(SP3)で作成したアプリケーション(exeファイル)を終了させても、数秒間動作し続ける現象が発生しています。Win98ではこの問題が発生し、Win95ではすぐに終了します。
  • 終了させているプログラムの中身は「終了_Click()」であり、処理の最後に「Unload Me」を実行しています。お手上げ状態であり、すぐに終了させたいとのことです。
  • ご指導のほど、よろしくお願いいたします。
回答を見る
  • ベストアンサー

すぐにexeファイルが終了しない。

VB5(SP3)でアプリケーション(exeファイル)を作成したのですが、 終了させても、数秒間アプリケーションが作動しているようなのです。 (「Ctrl」+「Alt」+「Delete」で「アプリケーションの強制終了」を表示させて確認しています) Win98でこの現象が発生し、Win95だとすぐに終了してくれます。 (どちらとも、同じスペックのPCです) ちなみに、終了させているプログラムの中身は下記のとおりです。 Private Sub 終了_Click()   (処理)   Unload Me   End End Sub すぐに終了させたいのですが、お手上げ状態です。 ご指導のほど、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.1

どっちかというと、UnloadせずにEndしたほうが、効率的に終了します。 それでも終了しないなら、確認すべきことは、いずれかのフォームのUnloadイベントか、QuerryUnloadイベントにCancel = 1とか入ってないかということです。 これが入ってると、シャットダウンもできません。 同じスペックでOSだけ違うとのことですが、Windowsは使っていると次第にわけのわからんエラーに見舞われるので、OSの違いによる差はないと思ったほうがいいでしょう。 もちろん、OS依存のAPIなどを使っている場合は別ですが。 両方のOSの総起動時間などがわかれば、たいだいで良いから教えてください。

honey-honey
質問者

補足

haporunさま ご回答頂き、大変ありがとうございます。 総起動時間に関しては以下のとおりです。 Win95=4800時間くらい Win98=1200時間くらい ちなみに、Cancel=1とかもチェックしてみましたがありませんでした。 APIもOSに依存するようなものはないとは思うのですが・・・。 ご指導のほど、宜しくお願い致します。

その他の回答 (1)

  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

EXEファイルではなく、VB内ではどうなってますか? Win95内と、Win98内でコンパイルせずに起動して、どこで止まっているか確認してみてください。

honey-honey
質問者

お礼

う~ん、同じみたいですね。 endの部分でソース表示画面に戻っていきます。 Win98とVBに関する質問に変えますので 一度、この質問を終了させていただきます。 haporunさま ご指導のほどありがとうございました。

関連するQ&A

  • vb製EXEが終了しない

    XPでVB6.0のアプリを作っているのですが、unloadや×ボタンで終了しなくなってしまいました。 Form_Unloadにブレークを貼って調べようとしたのですが、ブレークで止まるのですが、そこからIDEの操作が全くできなくなります。 タスクバーでIDEを右クリックし、閉じる(C)を選ぶと終了します。 また、EndステートメントをForm_Unloadに書くと終了します。ただし、EndステートメントだとIDEも終了してしまいます。 終了しなくなった原因ってなんなんでしょうか。

  • [VB6]オーナーウィンドウを設定したShowメソッド

    こんにちは。 XP(SP2),VB6(SP6)で 親フォーム -> 子ダイアログ -> 孫ダイアログを表示する処理を作成し実行すると、 子ダイアログを閉じた際、親フォームが他のアプリケーションの下 にもぐってしまいます。 (例えばメモ帳上で実行して、子ダイアログを閉じた時にメモ帳の下に隠れてしまう、デバッグ時ならばVBの下に隠れる) 孫ダイアログを表示させずに、子を閉じるとこの様に減少は起こりません。 なぜこの様になるのでしょうか? 又、回避策はあるでしょうか?ご存じの方、教えてください。 以下、現象再現用のテストプログラムです。 親フォーム Private Sub Command1_Click() dlg1.Show vbModeless, Me End Sub 子ダイアログ(dlg1) Private Sub Command1_Click() dlg2.Show vbModal, Me End Sub Private Sub CancelButton_Click() Unload Me End Sub 孫ダイアログ(dlg2) Private Sub CancelButton_Click() Unload Me End Sub

  • フォームのボタンからのみexcelを終了したい

    おねがいします。 都合上、フォームのボタンからだけexcelを終了したのです。 Private Sub CommandButton1_Click() Application.DisplayAlerts=False Application.Quit End Sub それに伴い、 右上のexcelのxボタン、シートのxボタンを無効化または非表示にしたいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean)      If CloseMode = 0 Then     Cancel = 1   End If End Sub これで、エクセルxボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。

  • エクセルのユーザーフォームでご教授ください

    マクロの知識はほぼなく、調べながらエクセルの入力用のユーザーフォームを作りましたが、うまく作動しません。 UserForm1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Private Declare Function ReleaseCapture Lib "user32" _ () As Long Private Sub UserForm_Initialize() Me.Show End Sub Private Sub Button_cxl_Click() Me.Hide End Sub Private Sub ok_Click() Dim RowNum As Long Dim Ctrl As Control RowNum = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(RowNum, 1).Value = Me.txt_date Cells(RowNum, 2).Value = Me.txt_guest Cells(RowNum, 3).Value = Me.txt_person Cells(RowNum, 4).Value = Me.txt_begin Cells(RowNum, 5).Value = Me.txt_finish For Each Ctrl In Me.Controls If Ctrl.Name Like "txt*" Then Ctrl.Value = "" RowNum = 0 End If Next Ctrl Me.Hide ReleaseCapture UserForm2.Show vbModal End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ UserForm2 ~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Private Declare Function ReleaseCapture Lib "user32" _ () As Long Private Sub UserForm_Initialize() End Sub Private Sub ButtonEnd_Click() Unload Me UserForm1.Hide End Sub Private Sub ButtonNext_Click() Unload Me ReleaseCapture UserForm1.Show vbModal End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ Module1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Sub ユーザーフォーム() UserForm1.Show End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ UserForm1を開き、Button_cxlで閉じず、もう一度Button_cxlをクリックで閉じる。 UserForm1を開き、Button_okでUserForm2を出し、ButtonEndをクリックでUserForm1にもどる(1と2を数度行き来しても同じ) UserForm1を開き、Button_okでUserForm2を出しButtonNextをクリックでUserForm1にもどりButton_cxlをクリックで閉じず、もう一度クリックしても閉じず、三回目で閉じる。 現状、エクセルを開いた直後のみで発生してます。 一度ユーザーフォームを出し、閉じたあとは意図通り動き、再度エクセルを開くまで発生しません。 ちなみにUserForm2の Private Sub ButtonEnd_Click() Unload Me UserForm1.Hide End Sub 部分の、UserForm1.HideをUnload UserForm1にすると、「オブジェクト変数または With ブロック変数が設定されていません」と出てデバックでModule1の UserForm1.Show が黄色になります。 どこが悪いか教えてください。

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

  • VBA スタック容量が足りない・・・

    こんばんわ! エクセルのVBAを使った管理システムを作ろうと思うのですが、色々考えて下記のような状態にしてみたのですが、ユーザーフォームをモードレスにするとスタック容量が足りなくなります。 Sub aaa_date() If Range("a1") = 1 Then bbb_date.Show ElseIf Range("a1") = 2 Then ccc_date.Show ElseIf Range("a1") = 3 Then ddd_date.Show End If Call aaa_date End Sub bbb_date(ユーザーフォーム)に↓ Private Sub CommandButton1_Click() Range("a1") = 2 Unload Me End Sub Private Sub CommandButton2_Click() Range("a1") = 3 Unload Me End Sub ccc_date(ユーザーフォーム)に↓ Private Sub CommandButton1_Click() Range("a1") = 1 Unload Me End Sub Private Sub CommandButton2_Click() Range("a1") = 3 Unload Me End Sub ddd_date(ユーザーフォーム)に↓ Private Sub CommandButton1_Click() Range("a1") = 1 Unload Me End Sub Private Sub CommandButton2_Click() Range("a1") = 2 Unload Me End Sub ※bbb_dateとccc_dateとddd_dateはそれぞれにあるボタンを押すとA7セルの値を変更するようにして、aaa_dateでどのフォームを表示するのかを選択しています。 ※実際にはもっと沢山ユーザーフォームがあります。 上記の状態では動作するのですが、エクセルの表に値を入力したいので、bbb_dateとccc_datとddd_datをvbModeless(モードレス状態)にすると、スタック容量が足りませんと出ます。 別のやり方でもよいですので、ユーザーフォームを切り替える良い方法があったらお願いします。

  • ユーザーフォームの切り替えについて・・・

    UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)

  • ブックの終了がうまくいきません

    Excel2003 でマクロ作成中の超初心者です。マクロ完成まであと一歩になりました。次から進みません。お願いします。 ブックA ブックB ブックCの3個のブックがあります。 ブックAのコマンドボタン→ ブックBに飛びます。 ブックBには、フォームコントロール(終了するコマンドボタン)と、特定セルにコントロールが張り付けてあります。 ブックA→ブックBの終了ボタン →正常に終了します。 ところが、ブックBのコントロールから、ブックCに移り、 ここからも一度ブックBに戻って終了ボタンを押すとBブックは終了するものの、Cブックが閉じられません。なぜでしょうか? -----Bブックのセルに貼り付けたコントロールのマクロ----- Sub ブックCへ() Application.ScreenUpdating = False Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("21年計算01.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\21年計算01.xls") End If '開いて作業中の場合。 Workbooks("21年計算01.xls").Activate ActiveWindow.WindowState = xlMaximized - ---最大化 Worksheets(12).Select End Sub -----Bブックのフォームコントロールのマクロ----- Private Sub CommandButton5_Click() Unload Me ActiveWorkbook.Close SaveChanges:=True End Sub -----Cブックのフォームコントロールのマクロ----- Private Sub データ入力_Click() Unload Me Application.ScreenUpdating = False On Error GoTo err: Workbooks("21年計算02.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\21年計算02.xls" '''データ処理.Show Application.ScreenUpdating = True End Sub

  • ACCESSでフォームのUnloadでデータベースを閉じる様にしたら・・・

    ACCESS97でフォームのUnloadを使ってフォームを閉じた後、データベースも閉じるプログラムを作って実行させました。思った通りに動いたのですが、フォームをデザインビューにしようとすると、おそらく上記のプログラムが実行される為、データベースが閉じてしまうので編集できなくなってしまいました。 Pribate Sub cmdClose_Click() DoCmd.Close acForm,Me.Name End Sub -------------------------------- Private Sub Form_Unload(Cancel As Integer) Application.CloseCurrentDatabase End Sub 多分この様なプログラムでした。 解決方法を教えてください。 宜しくお願いします。

  • ユーザーフォームに入力したデーターが転記できない

    いつもお世話になります。 Windows7 excell2010 です。 いろんなものに勉強してここまでに作成したユーザーフォームですが、データーは入力できるのですがコマンドボタンをクリックしても各セルに反映されません。 色々と試行錯誤していますがうまくゆきません。 どこに不具合があるかわからず恐れ入りますがどなたかご指導いただけませんか。 参考にコードは参考に下記にします。 ユーザフォームのVBAは下記です コード ※Module1 Sub 売上() Do UserForm1.Show Loop End Sub Sub 入金() Do UserForm2.Show Loop End Sub ※UserForm1 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "1" .AddItem "2" .AddItem "3" End With End Sub Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm1.TextBox1.Text Cells(n, 3) = UserForm1.TextBox2.Text Cells(n, 4) = UserForm1.TextBox3.Text Cells(n, 11) = UserForm1.ComboBox1.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub ※UserForm2 Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm2.TextBox1.Text Cells(n, 3) = UserForm2.TextBox2.Text Cells(n, 4) = UserForm2.TextBox3.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub

専門家に質問してみよう