allgemeine Frage: mehrere Bedingungen

01/11/2009 - 13:11 von Susanne Wenzel | Report spam
Hallo NG,
der Betreff ist nicht so toll gewàhlt, mir fiel da aber auf die Schnelle
nix besseres ein.

Ich habe folgendes sehr gebràuchliches Konstrukt:

If Bedingung1 or Bedingung2 then
'mach was
End If

Meine Frage: habe ich eigentlich ohne weitere Programmzeilen eine Chance,
herauszufinden, welche Bedingung (oder beide) eingetreten ist, wenn er das
"mach was" ausführt? Schreibt er sich das irgendwo weg und könnte ich das
dann auslesen?

Ich vermute ja ganz stark, dass der Compiler das nicht tut (ich wüsste
jetzt aber auch nicht, wo ich das nachlesen könnte), aber wollte hier
vorsichtshalber noch mal fragen, da ich momentan mit word-vba herummache.

Oder ist diese Frage besser in der VB-NG aufgehoben?

Vielen Dank fürs Lesen und
Viele Grüße aus dem hohen flachen Norden Deutschlands
Susanne
Office XP, SP3, aktueller Patchstand
Windows 2000, SP4, aktueller Patchstand
KI-TRIPLE 2007
 

Lesen sie die antworten

#1 Bernhard Sander
01/11/2009 - 14:54 | Warnen spam
Hallo Susanne,

Ich habe folgendes sehr gebràuchliches Konstrukt:

If Bedingung1 or Bedingung2 then
'mach was
End If

Meine Frage: habe ich eigentlich ohne weitere Programmzeilen eine Chance,
herauszufinden, welche Bedingung (oder beide) eingetreten ist, wenn er das
"mach was" ausführt? Schreibt er sich das irgendwo weg und könnte ich das
dann auslesen?


Von selbst merkt sich VB(A) nicht, aus was für einzelnen Termen ein Ausdruck
zusammengesetzt ist. Das musst Du selbst organisieren. Das gilt übrigens für
alle Arten von Ausdrücken, egal ob logisch, numerisch, Zeichenkette... VB(A)
merkt sich z.B. auch nicht von allein, wenn Du 2 und 2 zusammenzàhlst, dass die
4 aus just diesen beiden Zahlen addiert wurde oder aus dem Produkt dieser beiden
Zahlen entstand oder dadurch, dass die eine 2 mit der anderen potenziert wurde.

2 Varianten:
Du speicherst zunàchst die Ergebnisse der beiden Teilbedingungen und arbeitest
damit weiter:
Dim lBeding1 As Boolean, lBeding2 As Boolean
lBeding1 = (komplizierte Teilbedingung1)
lBeding2 = (komplizierte Teilbedingung2)
If lBeding1 OR lBeding2 then
' mach ein bissel was
If lBeding1 then
' mach noch ein bissel was
End If
If lBeding2 then
' mach ein bissel was andres
End If
End If

oder Du fragst an den betreffenden Stellen einfach nochmal die gleiche
(Teil-)Bedingung ab:

If (komplizierte Teilbedingung1) OR (komplizierte Teilbedingung2) then
' mach ein bissel was
If (komplizierte Teilbedingung1) then
...

Die erste Variante ist meist übersichtlicher und wesentlich leichter zu warten.
Die zweite Variante kann in speziellen Fàllen nötig sein, vor allem wenn in die
Bedingungen àußere Einflüsse einfließen (dürfte im Umfeld von Word eher selten
der Fall sein).

Gruß
Bernhard Sander

Ähnliche fragen