0

Select Caseを使用して文字列値を評価しようとしていますTempVarが、この場合は正しい結果が得られません。

これまでの私のVBAコード:

Private Sub Form_Load()

    Select Case TempVars!CurrentStatus

        Case Entered
            'code to disable some controls

        Case In Progress
            'code to disable some controls

        Case Ready to Approve
            'code to disable some controls

        Case Approved
            'code to disable some controls

        Case Else
            Call MsgBox("Case statement didn't catch", vbInformation, "Tempvar test for case statements")

    End Select
End Sub

別のTempVar形式で次のように設定されます。

Dim StrUserInput1 As String

TempVars("CurrentStatus").Value = DLookup("Status", "Control", "Status = '" & StrUserInput1 & "'")

'This is set by comparing the user input vs allowed status (for reports which is yet to be implemented)

Caseasを設定してみましたCase "Entered"が、正しいケースではなく、常に最初のケースが選択されます。上記のようにフォーマットされている場合、結果は次のようになります。Case Else

なぜ、またはどのようにして正しい結果が得られないのかについて、誰かが洞察を提供できますか?

4

1 に答える 1

4

コードが実行されてもエラーが発生しないことに驚いています。次のように、文字列リテラルを引用符で囲む必要があります。

Select Case TempVars!CurrentStatus

    Case "Entered"
        code to disable some controls

    Case "In Progress"
        code to disable some controls

    Case "Ready to Approve"
        'code to disable some controls

    Case "Approved"
        'code to disable some controls

    Case Else

        Call MsgBox("Case statement didn't catch", vbInformation, "Tempvar test for case statements")

End Select

それが機能しない場合は、ブレークポイントを設定して、case式に入力したときSelect Case TempVars!CurrentStatusの値を確認します。TempVars!CurrentStatus

于 2012-11-20T20:16:40.027 に答える