2017-08-23 4 views
0

私は契約の詳細といくつかの追加情報を入力するサブフォームのレコードフォームを1つ持っています。メインフォームには、閉じるためのコマンドボタンがあります。Accessのフォームからの終了を確認するMsgBox

閉じるときに2つのコントロール(メインフォームとサブフォームに1つ)をチェックする必要があります。いくつかの条件が満たされている場合は、はい/いいえMsgBoxが表示されます。ユーザが「はい」を押すと、フォームが閉じ、「いいえ」を押すと、フォームは開いたままになります。

Private Sub Form_Unload(Cancel As Integer) 
Dim Response As Integer 

Response = MsgBox("It looks like this contract is fixed. Would you like to edit the final price?", vbYesNo, "Database Information") 

If Me![fixed price] = 0 And Me![Fixation Orders Subform1].Form!Text38 = "Final Fixed Price" Then 
    Cancel = True And Response 
     If Response = vbYes Then 
      Cancel = True 
     Else 
      Cancel = False 
     End If 

Else 
    Cancel = False 
End If 

End Sub 

問題:

は、これまでのところ、私はこれを持って、私は「応答」を定義した前のMsgBoxが正しく登場しますが、フォームはとにかく閉じました。メッセージボックスがフォームがいずれかのクローズ私は「はい」または「いいえ」さらに

を押して何

  • 関係なく表示されません

    1. :私は「場合」第二に、それを使用するように定義された後、この問題を解決した後、次のレコードに行くときにもこのコードを条件に当てはめてください。前もって感謝します。

  • +1

    は多分 '=レスポンスを取り消し=キャンセル代わりに= trueおよびResponse'キャンセル'の真とvbYes'、手段は同じになりますANDの反対側。 「TRUEと今日=水曜日」は、一日だけチェックする必要があります。 ifを見て、論理的ではないと思われる場合は、Cancelを設定してから、msgboxの決定に基づいてください。 end subの前に、単に 'cancel = response = vbYes'を入力するか、それとも決まっているのかを判断してください。 –

    +1

    これは奇妙なコードです。もちろん、常にメッセージボックスが表示されます。そのサブシェルで最初に行うことは、メッセージボックスを表示し、その結果を 'Response'に割り当てます。これは 'If'ステートメントにネストされていません。 'Cancel = True And Response'という行は正確には何ですか?あなたは 'Option Explicit'を持っていますか? –

    +0

    こんにちは、もう一度エリック。私はちょうど私自身でVBAを学び始めたので、plsは辛抱強くてください。あなたが参照している行は、アンロードを取り消し、条件が満たされている場合msgboxをポップアップするはずです。私が回答を定義するまでうまくいった。私は "Option Explicit"が何であるか分からない。 msgboxの応答を確認する適切な方法は何ですか? – aran0ia

    答えて

    0

    は、私はこのようなものであるべきと考えている:

    Private Sub Form_Unload(Cancel As Integer) 
    If Me![fixed price] = 0 And Me![Fixation Orders Subform1].Form!Text38 = "Final Fixed Price" Then 
        If MsgBox("It looks like this contract is fixed. Would you like to edit the final price?", vbYesNo, "Database Information") = vbYes Then 
         Cancel = True 
        End If 
    End If 
    End Sub 
    
    +0

    ありがとうございました。メッセージボックスは正しく表示されますが、フォームはとにかく閉じます。それでも、進行: – aran0ia

    +0

    編集:問題解決。あなたのコードは完全に正常にフォームを閉じたが、私はコマンドボタンを使用したときに応答を閉じた( "クローズウィンドウマクロ")。ボタンのOnClickイベントにコードを置き、キャンセル= trueと置換DoCmd.Close。もう一度、ありがとうございます。 – aran0ia

    関連する問題