2016-06-02 7 views
0

Ich Abfrage Outlook-Datenbank über Excel VBA, und ich möchte zwei Bedingungen für den Wert einer benutzerdefinierten Eigenschaft anwenden. Der folgende Code, der beiden Bedingungen in derselben hat „If“ AussageMehrere Bedingungen für ein Outlook-Element in Excel VBA

Set cat1 = CurrentItem.UserProperties.Find("catniveau1") 
If cat1 <> "" and Not (cat1 Is Nothing) Then 

wirft die folgende Fehlermeldung: „Objektvariable oder With-Blockvariable nicht festgelegt“. Jedoch ist mit zwei getrennten „if“ Anweisungen adaequat:

Set cat1 = CurrentItem.UserProperties.Find("catniveau1") 
If Not (cat1 Is Nothing) Then 
    If cat1 <> "" Then 

Gibt es eine Möglichkeit, beide Bedingungen auf dem gleichen „if“ Anweisung anzuwenden?

Antwort

1

Es ist nicht möglich, beide Bedingungen gleichzeitig wegen logischen Verbindungen "Timing" zu bewerten, lassen Sie mich erklären.

  1. cat1 ist ein Bereich (bestimmt werden muss, was zuerst sein wird) Da cat1 nicht, dass Sie nicht, wenn seine <> auswerten kann definiert werden kann oder „“.

  2. cat1 <> "" es muss bewertet werden, was der Bereich ist. Ich weiß, das „menschliche“ Denken zugleich sein kann, aber, zusammenfassend:

A) Die Variable, zunächst als Bereich gelöst werden muss ...

B) ausgewertet werden, wenn <> „“,

ich verstehe nicht, warum Sie if <>"" brauchen würde wieder bewerten -wenn es nicht den Wert gefunden, es If Not (cat1 Is Nothing) Then nichts-, warum nicht nur verlassen die Aussage sein würde?

+0

Danke für die Antwort. Ich brauche beide Bedingungen als Nothing und "" sind mögliche Werte in meinem Fall. "" ist eine mögliche Auswahl aus Listbox in meiner (wahrscheinlich nicht optimalen) benutzerdefinierten Form. – JRivest

+0

Ich bin irgendwie verwirrt, nach der Frage Set cat1 = CurrentItem.UserProperties.Find ("catniveau1") Wenn cat1 <> "" und nicht (cat1 ist nichts) dann "wo würde ein zusätzlicher Wert genommen werden würde von wenn es nur oben gesetzt ist? 1. Wenn ich richtig rate, dann "Catniveau" ist eine Variable aus der Listbox in Ihrem Benutzerformular, warum nicht Sie Listbox style -Eigenschaft auf 2- fmstyledropdownlist, so Benutzer kann nicht andere als die eine bevölkert auswählen Dort? 2. Warum fügst du dem Formular keine OK-Schaltfläche hinzu und wertet es vor, wenn <> "" ausgewählt wurde? – Sgdva

+0

Ich zwinge den Benutzer tatsächlich, nur auszuwählen, was in der Listbox aufgefüllt ist. Listbox ist in VBS gefüllt, um den Inhalt einer Liste durch die Wahl einer anderen Liste beeinflussen zu können. Ich bin also der Schuldige, der aus praktischen Gründen beschlossen hat, die "" Wahl in eine Listbox zu setzen. Wahrscheinlich gibt es einen besseren Weg, um das zu tun, was ich getan habe (aber nach einigen Schwierigkeiten, es in einem anderen Kontext arbeiten zu lassen - Kopieren, Versetzung des Termins usw.) Ich denke, ich werde es so lassen wie es ist. – JRivest