2017-11-03 25 views
0

私は5つの列を持つテーブルを持っています。列Aは「フィールド名」、列B〜Dはフィールド名が存在する場合と存在しない場合のテーブル名です。セルの値が "#NA"の場合、フィールド名はそのテーブルに存在しません。そうでない場合、セルにはフィールド値が入ります。私は関数を作成しようとしていますので、列E(結果)は、フィールドが "All"、 "BDR and PFA"、 "BDR and Month Bill"のいずれかの文字列で表示されるようにします。 、 "PFA and Month Bill"、 "BDR Only"、 "PFA Only"、 "Month Bill Only"、 "None"があります。以下は私が作成した関数ですが、正しく評価されていません。たとえば、最初の行は、読み取りますExcel VBA範囲と複数の条件付きケースを選択

フィールド名:では "BENEFIT_PERIOD"、 "BDR:BENEFIT_PERIOD" PFAで、:月間ビルで "#NA"、 "BENEFIT_PERIOD"、結果: "すべて"

をそれがどのように見えることから

Function DetTblCombo(rng1 As Range, rng2 As Range, rng3 As Range) 


If (rng1.Cells.Count > 1) Or (rng2.Cells.Count > 1) Or (rng3.Cells.Count > 1) Then 
    AcceptOneCell = "Only allow 1 cell" 
    Exit Function 
End If 

Debug.Print rng1.Address 

Dim strRng1 As String 
Dim strRng2 As String 
Dim strRng3 As String 

strRng1 = rng1.Value 
strRng2 = rng2.Value 
strRng3 = rng3.Value 

Select Case DetTblCombo 

    Case strRng1 <> "#NA" And strRng2 <> "#NA" And strRng3 <> "#NA" 
     DetTblCombo = "All" 

    Case strRng1 <> "#NA" And strRng2 <> "#NA" And strRng3 = "#NA" 
     DetTblCombo = "BDR and PFA" 

    Case strRng1 <> "#NA" And strRng2 = "#NA" And strRng3 <> "#NA" 
     DetTblCombo = "BDR and Month Bill" 

    Case strRng1 = "#NA" And strRng2 <> "#NA" And strRng3 <> "#NA" 
     DetTblCombo = "PFA and Month Bill" 

    Case strRng1 <> "#NA" And strRng2 = "#NA" And strRng3 = "#NA" 
     DetTblCombo = "BDR Only" 

    Case strRng1 = "#NA" And strRng2 <> "#NA" And strRng3 = "#NA" 
     DetTblCombo = "PFA Only" 

    Case strRng1 = "#NA" And strRng2 = "#NA" And strRng3 <> "#NA" 
     DetTblCombo = "Month Bill Only" 

    Case strRng1 = "#NA" And strRng2 = "#NA" And strRng3 = "#NA" 
     DetTblCombo = "None" 

End Select 

End Function 
+1

'Select Case DetTblCombo'の代わりに' Select Case True'を選択 –

答えて

-1

:結果の欄には、「BDRと月間ビル」

を(#NA値がテキストではなく、式によって返される値なしの結果であるにも注意してください)お読みくださいあなたのケースステートメントのすべてがまったく同じものをチェックしています。それの外見から働くべき唯一のものはあなたの最初のケースステートメントです。あなたのケースステートメントを見て、彼らが正しい値をチェックしていることを確認してください。

+0

彼らは同じことをチェックしていません。 '='は何か、 '<>'は何か異なる組み合わせであることを見てください。 –

+1

ああ、申し訳ありません。私は明らかに読むことができません。 – thwalker6

関連する問題