2017-11-03 5 views
0

Ich habe eine Tabelle mit 5 Spalten. Spalte A ist "Feldname", Spalten B bis D sind die Namen der Tabellen, in denen die Feldnamen vorhanden sein können oder nicht. Wenn eine Zelle den Wert "#NA" hat, ist der Feldname in dieser Tabelle nicht vorhanden, andernfalls enthält die Zelle den Feldwert. Ich versuche eine Funktion zu erstellen, so dass Spalte E (Ergebnisse) mir wissen lässt, in welcher der Tabellen das Feld vorhanden ist, mit einer der folgenden Zeichenfolgen: "Alle", "BDR und PFA", "BDR und Monatsrechnung" , "PFA und Monatsrechnung", "Nur BDR", "Nur PFA", "Nur Monatsrechnung", "Keine". Unten ist die Funktion, die ich erstellt habe, aber es wird nicht richtig ausgewertet. Zum Beispiel die erste Zeile lautet:Excel VBA Select Case mit Bereichen und mehreren Kriterien

Feldname: "BENEFIT_PERIOD" In "BDR: BENEFIT_PERIOD" In PFA: "#NA" Im Monat Bill: "BENEFIT_PERIOD", Ergebnis: "Alle"

die Ergebnisse Spalte sollte „BDR und Monat Bill“ lesen

(beachten sie auch: die #NA Werte sind Text, nicht das Ergebnis von keinem Wert wird durch eine Formel zurück)

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 True' anstelle von' Select Case DetTblCombo' –

Antwort

-1

von dem, was es sieht aus wie Alle Ihre Fallanweisungen überprüfen genau dasselbe. Der einzige, der nach dem Aussehen funktionieren sollte, ist Ihre erste Case-Anweisung. Gehen Sie Ihre Fallanweisungen durch und stellen Sie sicher, dass sie die korrekten Werte überprüfen.

+0

Sie überprüfen nicht die gleiche Sache. Sehen Sie, was ist '=' und was ist '<>' sie sind verschiedene Kombinationen. –

+1

Ah, tut mir leid. Ich kann eindeutig nicht lesen. – thwalker6

Verwandte Themen