PDA

View Full Version : calling subs from conditional statements



vassili
06-26-2007, 02:24 AM
is there a more elegant way of writing this?

If chkBOM = False And chkpBOM = True And chkPO = True Then
Call getpBOM
Call getPO

ElseIf chkBOM = False And chkpBOM = True And chkPO = False Then
Call getpBOM

ElseIf chkBOM = False And chkPO = True And chkpBOM = False Then
Call getPO

ElseIf chkBOM = True And chkPO = False And chkpBOM = False Then
Call getBOM

ElseIf chkBOM = True And chkPO = True And chkpBOM = False Then
Call getBOM
Call getPO

ElseIf chkBOM = True And chkPO = False And chkpBOM = True Then
Call getBOM
Call getpBOM

ElseIf chkBOM = True And chkPO = True And chkpBOM = True Then
Call getBOM
Call getpBOM
Call getPO

End If

RichardSchollar
06-26-2007, 02:40 AM
Does it matter what order they're run in? Perhaps:

If chkBom Then getBom
If chkpBom Then getpBom
If chkPo Then getPo

Richard

johnske
06-26-2007, 03:27 AM
Try...

If chkpBOM And chkPO And Not chkBOM Then
Call getpBOM
Call getPO
ElseIf chkpBOM And Not (chkBOM Or chkPO) Then
Call getpBOM
ElseIf chkPO And Not (chkBOM Or chkpBOM) Then
Call getPO
ElseIf chkBOM And Not (chkPO Or chkpBOM) Then
Call getBOM
ElseIf chkBOM And chkpBOM And Not chkPO Then
Call getBOM
Call getpBOM
ElseIf chkBOM And chkPO And chkpBOM Then
Call getBOM
Call getpBOM
Call getPO
End If

johnske
06-26-2007, 07:47 PM
Sorry, I missed one case... :)

If chkpBOM And chkPO And Not chkBOM Then
Call getpBOM
Call getPO
ElseIf chkpBOM And Not (chkBOM Or chkPO) Then
Call getpBOM
ElseIf chkPO And Not (chkBOM Or chkpBOM) Then
Call getPO
ElseIf chkBOM And Not (chkPO Or chkpBOM) Then
Call getBOM
ElseIf chkBOM And chkPO And Not chkpBOM Then
Call getBOM
Call getPO
ElseIf chkBOM And chkpBOM And Not chkPO Then
Call getBOM
Call getpBOM
ElseIf chkBOM And chkPO And chkpBOM Then
Call getBOM
Call getpBOM
Call getPO
End If

vassili
07-02-2007, 07:27 PM
cool guys, thanks for the help.

mdmackillop
07-03-2007, 02:32 PM
You can also apply integer values which provide unique solutions for each outcome
Sub SelectMacro()
If chkBOM Then a = 1
If chkpBOM Then b = 2
If chkPO Then c = 4
test = a + b + c
Select Case test
Case 1
Call getBOM
Case 2
Call getpBOM
Case 3
Call getBOM
Call getpBOM
Case 4
Call getPO
Case 5
Call getBOM
Call getPO
Case 6
Call getpBOM
Call getPO
Case 7
Call getBOM
Call getpBOM
Call getPO
End Select
End Sub

Cyberdude
07-04-2007, 04:25 PM
Hey, Malcolm, neeto idea! :clap:
Sid