Is there a limit to the number of Or’s in an if then statement?

Haven’t met one, but if you are considering writing something which tests that, you are making life hard for yourself.

```
if a or b or c or d or e or f or g or h or i or j or k then //etc
end if
```

The line length i code gets excessive very quickly, and any changes you need to make in the future will be difficult to edit.

for clarity (if not speed), I would be tempted to

```
dim do_it as boolean
do_it = do_it or a
do_it = do_it or b
do_it = do_it or c
do_it = do_it or d
do_it = do_it or e
do_it = do_it or f
//as many as you like
if do_it then
end if
```

Other than the practical limits of what makes sense, I don’t think so. But if you have that many to even prompt this question, think about doing what you’re doing differently.

One possibility:

```
Select Case False
Case condition1
Case condition2
Case condition3
Case Else
// All conditions passed
End Select
```

This is my code (number partitions)

If _

t(1,1) + t(2,1) + t(3,1) + t(4,1) + t(5,1) + t(6,1) = n Or _

t(1,1) + t(2,1) + t(3,1) + t(4,1) + t(5,2) = n Or _

t(1,1) + t(2,1) + t(3,1) + t(4,2) + t(6,1) = n Or _

t(1,1) + t(2,1) + t(3,1) + t(4,3) = n Or _

t(1,1) + t(2,1) + t(3,2) + t(5,1) + t(6,1) = n Or _

t(1,1) + t(2,1) + t(3,2) + t(5,2) = n Or _

t(1,1) + t(2,1) + t(3,3) + t(6,1) = n Or _

t(1,1) + t(2,1) + t(3,4) = n Or _

t(1,1) + t(2,2) + t(4,1) + t(5,1) + t(6,1) = n Or _

t(1,1) + t(2,2) + t(4,1) + t(5,2) = n Or _

t(1,1) + t(2,2) + t(4,2) + t(6,1) = n Or _

t(1,1) + t(2,2) + t(4,3) = n Or _

t(1,2) + t(3,1) + t(4,1) + t(5,1) + t(6,1) = n Or _

t(1,2) + t(3,1) + t(4,1) + t(5,2) = n Or _

t(1,2) + t(3,1) + t(4,2) + t(6,1) = n Or _

t(1,2) + t(3,1) + t(4,3) = n Or _

t(1,2) + t(3,2) + t(5,1) + t(6,1) = n Or _

t(1,2) + t(3,2) + t(5,2) = n Or _

t(1,2) + t(3,3) + t(6,1) = n Or _

t(1,2) + t(3,4) = n Or _

t(1,3) + t(4,1) + t(5,1) + t(6,1) = n Or _

t(1,3) + t(4,1) + t(5,2) = n Or _

t(1,3) + t(4,2) + t(6,1) = n Or _

t(1,3) + t(4,3) = n Or _

t(1,4) + t(5,1) + t(6,1) = n Or _

t(1,4) + t(5,2) = n Or _

t(1,5) + t(6,1) = n Then

Something does not work but the error will be in another place

Thank you

(Please use the code tags when posting code to make it easier for us to help you.)

That’s fine, but this is more readable and maintainable:

```
Var wasMatch As Boolean = True
Select Case n
Case t(1,1) + t(2,1) + t(3,1) + t(4,1) + t(5,1) + t(6,1)
Case t(1,1) + t(2,1) + t(3,1) + t(4,1) + t(5,2)
Case t(1,1) + t(2,1) + t(3,1) + t(4,2) + t(6,1)
...
Case Else
wasMatch = False
End Case
If wasMatch Then ...
```

(sorry)

I will try this

Thank you

The error was in the development of the partition. Items were missing.

Using IF a or b THEN saves a lot of execution time. If a part of the OR (from left to right) is true, the rest is not evaluated.

Thank you very much for your contribution.

maybe you can wrap a method around

instead of

`t(1,1) + t(2,1) + t(3,1) + t(4,1) + t(5,1) + t(6,1) = n`

`testmethod(t,array(1,2,3,4,5,6),array(1,1,1,1,1,1),n)`

Yes, that’s called “short-circuiting” and is common to a lot of languages.

`False And SomeFunction()`

will never reach `SomeFunction()`

.

`True Or SomeFunction()`

won’t either.

The `Select Case`

structure I suggested works the same way.