• ベストアンサー

VB6 / コーディング方法

1. 下記の>>>箇所で、Exit Subではなくて、プログラム全体を終了させたいのですが関数をおしえてください。 Private Sub EX() If 条件 Then 条件に合致した場合の処理 Else 条件に合致したかった場合の処理 >>>ここで、プログラムを終了させる関数を入れたい。 End If End Sub 2. 標準コントロールで画面を作成しています。 ctlファイルの先頭に画面スクリプトが定義されています。 例えば、上記1の条件判断を画面スクリプトの前行に置き、プログラム起動時に最初に読ませたいのですが良いでしょうか?

noname#187796
noname#187796

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

オイラも素人なんで、あまり詳しくないんだけど、 データを保存させて終わりたいプログラムなどの場合は、 一箇所で終了処理をさせたほうが良いと思うので、 終了処理をメインフォームのアンロードイベントなどに書くことが、 多いんじゃないかな。 で、その最後にendとしておけば、 (すべての)領域は破棄されることになると思う。 で、 >>>ここで、プログラムを終了させる関数を入れたい。 こやつをunload me とするとか。 変数の値をどこにとっておくかは、 プロシージャー内だったら、ローカル変数でよし、 フォーム内で済む話だったら、コントロールに入れても良いし、 グローバル変数を使ったって問題は無いと思う。  どれを使ってもプログラムを終了させた時点で、その領域は参照できないと思う。

noname#187796
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

1. end 2. 良いと思います。 sub (main) を作って、そいつをプロジェクトのプロパティからスタートアップに設定することもできます。 (で合致した場合の処理で最初に開きたいフォームなどを指定する)

noname#187796
質問者

補足

ありがとうございます。 もう一つ質問させてください。 以下のことをしたいのですが、サンプルなどございますか? ステップ2,4が解りません。 1. 例えば、あるAPIなどを通じて"AAAAA"という5桁の返り値を取得したとします。 2. 取得した"AAAAA"をbufferエリアに保管します。 buffer As String * 5 3. 条件選択のステップで Private Sub EX() If buffer = "AAAAA" Then 条件に合致した場合の処理 Else 条件に合致しなかった場合の処理 End If End Sub 4. プログラム終了時にbufferエリアをクリア。 (プログラムは強制終了ですのでどこで終了するかわかりません。)

関連するQ&A

  • フォームを閉じないようにする VB6 SP6

    VB6 でプログラムを作成中です。 プログラムを実行して、フォームが立ち上がった所で右上の×を押し、画面を閉じようとします。 そこで以下のコードで、もし×が押されたらvbYesNoメッセージボックスを表示させ、もし「いいえ」が押されたらフォームを閉じないようにし、実行画面を維持したいのです。 しかし、Exit Sub ですとプログラムが終了してしまい、困っています。宜しくお願い致します。 Private Sub Form_Unload(Cancel As Integer) 'フォームを閉じる Dim last As String last = MsgBox(" プログラムを終了させますか?", vbYesNo, "終了確認1") If (last = vbYes) Then Dim last2 As String last2 = MsgBox(" 本当にプログラムを終了させますか?", vbYesNo, "終了確認2") If (last2 = vbNo) Then Exit Sub End If End If If (last = vbNo) Then Exit Sub End If End Sub

  • エクセルVBA

    ユーザーフォームがあり、コマンドボタンが準備されています そのコマンドボタンをクリックした場合、処理1~処理3を実行するようにしています Sub CommandButton1_Click() CommandButton1処理1 CommandButton1処理2 CommandButton1処理3 End Sub Private Sub CommandButton1処理1() ・・・ End Sub Private Sub CommandButton1処理2() ・・・ End Sub Private Sub CommandButton1処理3() ・・・ End Sub 処理1→処理2→処理3という流れが進むかと思います 処理1の中にIf~End ifがあり、Ifに合致する場合はメッセージボックスが表示するようになっています 処理3の中に、「ユーザーフォームを閉じる」記載がされています 処理1のIfに合致する場合、メッセージボックスを表示させユーザーフォームを閉じることなく終了したいです つまりIfに合致した場合、その後の処理2、処理3をさせず処理1で終了させればいいのかと思ったのですが、そのようなことはできるのでしょうか? 処理1でIfに合致する場合、Exit Subとすると処理1は終了するかもしれませんが、その後処理2、処理3に進んでしまうので困っています よろしくお願いします

  • vbモーダルについて

    VB6.0について質問です。 FormAからFormBをモーダルで開き、さらにFormBからFormDをモーダルで開く という一連の操作を行いたいのですがうまくいきません>< エラー内容は、FromDを開く際にFormB内のデータが存在しなかったら FormDを表示せずにアンロードしたいのに表示されたままになってしまいます。 以下のコードで処理を行ってるのですがエラーのフラグを立ててアンロード処理を 行おうとしてもExitに移った瞬間にプログラムが終了してしまいます。 FormDをモーダレスで開くとアンロード処理まで普通に処理されます。 モーダルでアンロード処理までいくにはどのような処理を加えたらよいでしょうか? If i = 0 Then MsgBox "データありません。" Err_Flg = 1 Exit Sub End If ---------------------------- If Err_Flg = 1 Then Err_Flg = 0 Unload FormD End If

  • OK CANCEL後の処理を戻す方法

    終了ボタンをクリックして別の関数で1:0kか2:cancel がもどってきます。 Private Sub cmdEnd_Click() return_meに1 2が入っています。 If return_me = 1 Then End End If End sub 1:okだとendで終了ですが、cancelだと、もと処理を抜けたいのですが、方法がわかりません・・。このソースだとプログラムが固まります。初歩的だと思いますが、お願いします。

  • VB6,Ifから抜けるには?

    If a = b then   xxx  If c = d then    ここ!  End If   yyy End If zzz 上のここ!から抜け、zzz以降の処理を継続するにはどうすればよいでしょうか? Exit Subをやってしまうとプロシージャ自体から抜けてしまいます。

  • プロシージャ内のコーディングについて

    VB6のプロシージャ内のコーディングについてですが、一般的にどちらのコーディンク方法を使用されていますか。 それとも全く違う方法を使用されてますでしょうか。 御意見をお願いいたします。 方法1 Function A() as Integer if 例外判定 then 例外処理 Exit Function End If 通常処理 End Function 説明 例外が発生したら例外処理をしてすぐにプロシージャを抜ける。 例外処理が多くなると途中でプロシージャを抜ける部分が多くなってしまう。 方法2 Function A() as Integer if 例外判定 then 例外処理 Else 通常処理 End If End Function 説明 例外が発生しても最後までプロシージャを抜けない。 必ず同じ場所でプロシージャを終了する。

  • excel2007 VBで

    下記のマクロ作成して実際にセルにA、あるいは何かデータを入力しても下記イベント?が発生している気配がありません。 Application.EnableEvents = Falseの行がなにか問題なのでしょうか。実プログラムは If Target.Value = "A" Or Target.Value = "A" Thenの他にB、C、計算も含んでいるのですがApplication.EnableEvents = TrueはEnd Subの前行に入れてあります。 他に設定することがあるのでしょうか。どなたか教えてください。 Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Count > 1 Then Exit Sub '複数セルの入力は無視 Application.EnableEvents = False '割込み停止 ’[B3] = 123 ’Stop If Target.Value = "A" Or Target.Value = "A" Then Target.Value = "A" End If Application.EnableEvents = True '割込み再開 End Sub excel2007 VB6.5です。

  • EXCEL2010 VBA 複数処理の終了

    EXCEL2010 VBAでコマンドボタンを押すと複数の処理を実行するようにしています。 Sub 実行() 処理A 処理B Ens sub 処理Aでは実行時に確認画面が出てNOを選択すると処理が終了するようにしています。 確認画面は下記の様な形です。 If MsgBox("処理を実行しますか?", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If この処理Aの確認画面でNOを選択すると処理Aだけでなく処理Bも実行せず 終了するようにしたいのですが何か良い方法はないでしょうか? Exit Subにかわるすべての処理を終了させるコマンドがあれば良いのですが。。。

  • 【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?

    【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  環境:Vista+VB2008 でございます。 例えば下のようなコードがあったといたしまして、  Sub AAA    Call BBB  End Sub  Sub BBB    Call CCC  End Sub  Sub CCC    '★  End Sub 特定の条件の時のみ、★マークのところで、動作を終了したい (Sub AAAのEnd Subに移動したい)場合、どのようにすべきでございましょうか?? Exit SubだとSub CCCしか抜けてくれませんし(Sub BBBから実行を続行してしまう)、 フラグ立てだと  Public フラグ as string =""  Sub AAA    Call BBB    If フラグ = "抜ける" then Exit Sub     End Sub  Sub BBB    Call CCC    If フラグ = "抜ける" then Exit Sub     End Sub  Sub CCC    If (抜けたい時)then     フラグ = "抜ける"     Exit Sub    End If     End Sub のように、コードが少し見にくくなってしまいます。。。 何か他のスマートな方法などございましたら、是非ともご紹介いただきたくお願いいたします。 もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • VBの実行シーケンスについて

    お世話になります。 以下のような構造の場合 Sub1内の処理1が完了してから Sub2内の処理2が始まることは保証されるのでしょうか? また、Declareで定義したDLL呼出をCALLする場合、 CALLしたDLLの処理が終了するまでVBは待つのでしょうか? 基本的なところと思うのですが、開発したプログラムが不安なので、もしやと思い質問しました。 Sub Main() Sub1 Sub2 End End Sub Sub Sub1() 処理1 End Sub Sub Sub2() 処理2 End Sub

専門家に質問してみよう