2017-06-26 5 views
0

次の簡単なコードを設定して、レポートに除外グループを表示するかどうかを選択します。アクセスmsgboxはいいいえ選択してくださいレポート - 間違ったレポートを開く?

Private Sub cmdRptWorktypesByGroups_Click() 
    Dim rptExclYN As String 

    rptExclYN = MsgBox("Would you like this report with excluded groups (Yes)" & vbclrf & " or without excluded practice groups (No)?", vbYesNo, "Choose Report With or Without excluded groups") 

    If rptExclYN = Yes Then 
     DoCmd.OpenReport "rptWorkTypebyGroups", acViewReport 
    Else 
     DoCmd.OpenReport "rptWorkTypebyGroupsNoExcl", acViewReport 
    End If 

End Sub 

これは私のコードです。それはまっすぐ進むべきである。問題は、ユーザーが[はい]をクリックすると、rptWorkTypebyGroupsNoExclレポートが開きます。いいえをクリックすると、同じレポートが開きます。誰かが私が間違っていることを教えてもらえますか?

私は当初、クエリレコードソースを持つrptWorkTypebyGroupsレポートを持っていました。私はそのレポートをコピーし、rptWorkTypebyGroupsNoExclとしてコピーの名前を変更し、レコードソースのクエリを独自の名前で保存しました。なぜメッセージボックスが正しいレポートを開いていないのかわかりません。誰でも助けてくれますか?

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

答えて

2

MsgBox()関数は、文字列ではなくVbMsgBoxResult(整数)値を返します。

明示的にOption Explicitを使用していないので、Yesが新しい空のVariantとして作成されるため、If条件は選択した項目に関係なく常にfalseになります。

Option Explicitを各モジュールの上部に置きます。
コンパイル時に変数宣言を強制し、宣言されていない変数やスペルミスを報告します。 これを新しいモジュールに自動的に含めるには、VBAエディタでRequire Variable Declarationオプションを設定します。

正しいコード:

Private Sub cmdRptWorktypesByGroups_Click() 

    Dim rptExclYN As VbMsgBoxResult 

    rptExclYN = MsgBox("Would you like this report with excluded groups (Yes)" & vbCrLf & " or without excluded practice groups (No)?", vbYesNo, "Choose Report With or Without excluded groups") 

    If rptExclYN = vbYes Then 
     DoCmd.OpenReport "rptWorkTypebyGroups", acViewReport 
    Else 
     DoCmd.OpenReport "rptWorkTypebyGroupsNoExcl", acViewReport 
    End If 

End Sub 

編集:それはvbCrLf、ないvbclrfです。
Option Explicitが捕捉した別のもの。

+0

ありがとう!私はあなたに私に他の指針を与える時間をとっていただきありがとうございます。 – missscripty

0

私は馬鹿です。私は、rptExclYN = Yesで、rptExclYN = vbYesではないと言っていました。私の悪い。

Dim rptExclYN As Variant 

rptExclYN = MsgBox("Would you like this report with excluded groups (Yes)" & vbCrLf & _ 
" or without excluded groups (No)?", vbYesNo, "Choose Report With or Without Excluded Groups") 

If rptExclYN = vbYes Then 
    DoCmd.OpenReport "rptWorkTypebyGroups", acViewReport 
ElseIf rptExclYN = vbNo Then 
    DoCmd.OpenReport "rptWorkTypebyGroupsNoExcl", acViewReport 
End If 

それは、私はシンプルなものが欠落だけではないよ意味しますので、これは、他の誰かの役に立てば幸い:ここで働く簡単なコードです。

+1

@Andreがあなたに示したように、あなたは 'Dim rptExclYN'する必要があります。 – Gustav

関連する問題