Herbers Excel-Forum - das Archiv
variable logic operators

|
Betrifft: variable logic operators
von: Tino
Geschrieben am: 15.10.2003 12:08:22
Hallo,
hat jemand eine idee wie man logic operators variable programmieren kann? Background: Eine if...then schleife hat bis zu fuenf conditions die jeweils mit AND oder OR und <, >, = verbunden sind.
Eine moeglichkeit ist natuerlich alle moeglichen varianten zu programmieren, nur bei denn vielen kombination ist das nicht gerade sehr hilfreich; ausserdem kann man dann schlecht aenderungen einbauen und muss den ganzen code aendern.
ich hatte mir vorgestellt eine methode zu programmieren:
Sub Test (logicOp1 as ..., logicOp2 as..., ...) as boolean
hier wuerde sich dann eine if.. then schleife befinden, etwa so:
If 500 logicOp1 [e.g. >] VariableA logicOp2 [e.g. AND] 400 logicOp1 [e.g.=] Variable B then
...
EndIf
kann man so etwas ueberhaupt in VB/VBA machen?
Ich bin fuer jede kommentar wirklich dankbar
vielen dank fuer die hilfe.
tino
Betrifft: AW: variable logic operators
von: Michael Scheffler
Geschrieben am: 15.10.2003 12:44:57
Hi,
die logischen Variablen heißen Boolean, hast Du ja schon herausgefunden.
Dann ist für Mehrfach-If's das "Select Case" zu empfehlen.
"<" oder ">" geht bei Boolschen nicht.
Aus der Hilfe:
Logische Operatoren
And (Operator)
Eqv (Operator)
Imp (Operator)
Not (Operator)
Or (Operator)
Xor (Operator)
Gruß
Micha
Betrifft: Ansatz
von: ChrisL
Geschrieben am: 15.10.2003 12:49:16
Hi Tino
Ich kenne natürlich die genauen Umstände nicht, denn spontan scheint mir dass du damit nicht wirklich eine Vereinfachung des Codes/Struktur erreichst, es sei denn dass die VariableA, VariableB etc. in Wirklichkeit Konstante sind.
Habe erst an eine Funktion gedacht, die mit Select Case je nach LogicOp die entsprechende Abfrage durchführt. Scheint mir aber insbesondere aufgrund der Kombination AND und OR schwierig.
Die Idee die ich nun habe, ist die Abfrage mittels String zusammen zu bauen und dann über eine Zelle.Formula zu gehen. Mit dem AND/OR wird es aber trotzdem schwierig. Insbesondere, wenn noch solche Abfragen dazu kommen... IF (X = Y OR X > Y) AND (Z < Y) etc. also mit Klammern.
Hier mal ein Denkanstoss...
Option Explicit
Sub Makro()
Dim VariableA As Double, VariableB As Double
VariableA = 1000
VariableB = 1200
Range("A1").Formula = "=IF(" & VariableA & Op(1) & VariableB & ",TRUE)"
MsgBox Range("A1").Value
Range("A1").ClearContents
End Sub
Function Op(logicOP As Byte) As String
Select Case logicOP
Case 1: Op = "<"
Case 2: Op = "="
Case 3: Op = ">"
'etc.
End Select
End Function
Gruss
Chris